我了解过OAuth、Amazon REST API、HTTP Basic/Digest等,但无法将它们整合到“单一组件”中。以下链接可能是最接近的情况 - 为移动应用程序创建API - 认证和授权
我想构建以API为中心的网站服务。因此(起初),我会有一个API在中心位置,网站(PHP + MySQL)通过cURL,Android和iPhone通过它们的网络接口连接。因此,有3个主要客户端 - 3个API密钥。任何其他开发人员也可以通过API接口进行开发,并获得自己的API密钥。基于用户级别状态,如果我是管理员,可以删除任何内容等,所有其他人只能操作其本地(帐户)数据,API操作将被接受/拒绝。
首先,关于授权 - 我应该使用oAuth + xAuth还是我的某种自己的实现(参见http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/RESTAuthentication.html?r=9197)?据我所知,在Amazon服务中,用户等同于API用户(拥有API密钥)。在我的服务中,我需要区分标准用户/帐户(在网站上注册的用户)和开发人员帐户(应该拥有自己的API密钥)。
因此,我首先需要授权API密钥,然后验证用户本身。如果我使用Amazon的方案来检查开发人员的API密钥(授权其应用程序),那么我应该使用什么方案来进行用户身份验证?
我阅读了有关通过api.example.org/auth
获取令牌的内容,该令牌是在使用HTTPS和HTTP基本身份验证后发送我的用户名和密码,然后在每个后续请求中进行转发。如果我同时在Android和网站上登录,该如何管理令牌?如果我仅在第一个请求(传输用户名和密码时)使用SSL,而在每个其他请求上仅使用HTTP,那么中间人攻击会怎样?在这个例子中(密码保护REST服务),这不是一个问题吗?