【问题标题】:OAuth 2.0 for MVC - How does the RequestToken work?MVC 的 OAuth 2.0 - RequestToken 如何工作?
【发布时间】:2012-11-03 02:53:42
【问题描述】:
【问题讨论】:
标签:
asp.net-mvc
oauth-2.0
【解决方案1】:
这就是 OAuth 如何与您的应用程序 ID、应用程序密钥和应用程序的有效域结合使用的全部内容。这是一般的过程
您的应用程序使用您的应用程序 ID 和密码以及回调(返回 URL)向 OAuth 提供者发送请求。
-
OAuth 提供者获取请求,检查您的应用程序 ID 和密码,并验证回调 url 来自您为应用程序指定的域。
2a。如果回调 url 不是来自您指定的域,则请求将被错误拒绝。
2b 如果回调 url 来自您的域,它会向您的服务器返回一个临时请求密钥。
鉴于您收到了请求密钥,您将其发送回 OAuth 提供程序以获取用户的实际访问令牌。
现在,至于为什么设置请求密钥步骤,这是为了防止和帮助保护“坏人”尝试使用您的应用程序 ID 对其他用户进行虚假身份验证。通过向您发送请求令牌(您已批准的回调 URL),OAuth 提供者确信请求实际上来自您的服务器。
您当然可以发送回任何字符串而不是请求令牌,但您很快就会从 OAuth 提供者那里收到错误消息,因为该请求令牌与任何已知应用程序的任何现有身份验证请求都不对应。
最后,我不清楚您所说的“验证请求令牌”是什么意思?您没有生成令牌,可能不了解生成请求令牌的算法。鉴于此,我不确定您将如何验证这一点。如果您担心验证第一步,请查看 Facebook OAuth 流程。在那里,他们建议发送请求密钥作为返回 URL 的一部分(作为查询字符串参数)。该请求密钥将返回到您的应用程序,然后您可以将其用作验证,实际上,这是对您提出的请求的响应。如何存储和跟踪请求密钥取决于您(会话、数据库)。在 PHP 示例中,他们使用“状态”变量来跟踪唯一/任意字符串:Facebook OAuth Server Side Login Example (in PHP)