我已经阅读了有关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密钥,然后验证用户本身。如果我使用亚马逊的方案检查开发人员的API密钥(授权他们的应用程序),那么我应该使用哪个sheme进行用户身份验证?
我读到有关通过api.example.org/auth
(通过HTTPS,HTTP Basic)发布我的用户名和密码,然后在随后的每个请求中转发令牌的方式获得令牌的信息。如果同时在Android和网站上登录,如何管理令牌?如果我仅在第一个请求(传输用户名和密码时)仅使用SSL而在其他请求上仅使用HTTP时,中间人攻击怎么办?在此示例中,密码保护REST服务不是问题吗?