【发布时间】:2012-03-12 07:35:51
【问题描述】:
我已经阅读过 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 服务用户是 == API 用户(具有 API 密钥)。在我的服务中,我需要将标准用户/帐户(在网站上注册的那个)和开发者帐户(应该有他们的 API 密钥)分开。
所以我首先需要授权 API 密钥,然后验证用户本身。如果我使用 Amazon 的方案来检查开发人员的 API 密钥(授权他们的应用程序),我应该使用哪个 sheme 进行用户身份验证?
在(通过HTTPS,HTTP Basic)发布我的用户名和密码之后,我读到了有关通过api.example.org/auth 获取令牌的信息,然后在每个后续请求中转发它。如果我同时登录 Android 和 网站,如何管理令牌?如果我只在第一次请求时使用 SSL(当传输用户名和密码时)而在其他所有请求中只使用 HTTP,那么中间人攻击呢?在这个例子中这不是问题吗Password protecting a REST service?
【问题讨论】:
标签: php api authentication rest authorization