我读过oAuth、Amazon REST API、HTTP Basic/Digest等,但无法将其全部纳入"单件".这可能是最接近的情况——Creating an API for mobile applications - Authentication and Authorization
我想建立以API为中心的网站服务.所以(一开始)我中间会有一个API,website(PHP+MySQL)会通过cURL、Android和iPhone通过它们的网络接口进行连接.所以有3个主客户端-3个API密钥.任何其他开发人员也可以通过API接口进行开发,他们将获得自己的API密钥.API操作将根据userLevel状态被接受/拒绝,如果我是管理员,我可以删除任何内容等,所有其他人只能操作他们的本地(帐户)数据.
首先,授权-我应该使用OAuth+xAuth还是我自己的某种实现(参见http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/RESTAuthentication.html?r=9197)?据我所知,在Amazon service user is == API user (have API key)号.在我的服务上,我需要将标准用户/帐户(在网站上注册的用户)和开发人员帐户(谁应该有他们的API密钥)分开.
所以我首先需要authorize the API key,然后是Authenticate the user.如果我使用亚马逊的方案来判断开发者的API密钥(授权他们的应用程序),我应该使用哪个sheme来进行用户身份验证?
我读到在(通过HTTPS,HTTP Basic)发布用户名和密码之后通过api.example.org/auth
获得令牌,然后在每次后续请求时转发它.如果我同时在Android和website上登录,如何管理令牌?如果我只在第一个请求上使用SSL(在传输用户名和密码时),而在其他请求上只使用HTTP,那么中间人攻击怎么办?这在本例中不是一个问题吗Password protecting a REST service?