我们有一个使用 REST-ful 开发移动应用程序的计划。我们想应用 OAuth 1.0a 而不是 OAuth 2.0,因为我们不使用 SSL。我们也不想使用网络浏览器(我们认为基于 PIN 的 UX 不友好)。我们知道使用正常的 OAuth 流程是不可能的。
我不是安全架构方面的专家,但我在网上搜索了一下,发现有人使用挑战-响应模型之类的方法登录实现了。
如果我们的应用不需要保证用户名的安全并且用户信任我们在我们的应用中输入他们的密码,这种方法可以用来交换访问令牌吗?有什么破绽吗?
- 在服务器响应未经授权的请求令牌后,客户端开始质询-响应流程。
客户端向http://www.example.com/login发送请求,参数如 OAuth require: oauth_consumer_key, oauth_token, oauth_signature_method, oauth_timestamp, oauth_nonce 和附加的用户名参数 username="username",密码参数由用户密码计算(存储在服务器中), oauth_nonce 与 KDF 密钥派生函数/散列函数。客户端使用 OAuth 描述计算请求签名,但在省略密码参数后使用参数 username 和其他必需参数发送请求。
服务器检查请求并返回访问令牌。