0

我正在使用 MVC 的 OAuth 2.0,可在此处找到:http: //community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/18/oauth-2-0-for-mvc-two-legged -实现.aspx

对于与此有关的任何人-我对 RequestToken 感到困惑。实现了一个控制器,可让您获得一个请求令牌,该令牌将在 5 分钟后过期,然后您将该令牌传回以获取 AccessToken。但它从不检查请求令牌的有效性 - 似乎您可以传入任何您想要的访问令牌。此处 RequestToken 的想法是什么 - 您是否应该在这 5 分钟内创建自己的存储、引用和删除该令牌的方法?

谢谢,安迪

4

1 回答 1

1

这就是 OAuth 如何与您的应用程序 ID、应用程序密钥和应用程序的有效域一起工作的全部内容。这是一般的过程

  1. 您的应用程序使用您的应用程序 ID 和密码以及回调(返回 Url)向 OAuth 提供者发送请求。

  2. OAuth 提供者获取请求,检查您的应用程序 ID 和密码,并验证回调 url 来自您为应用程序指定的域。

    2a. 如果回调 url 不是来自您指定的域,则请求将被拒绝并出现错误。

    2b 如果回调 url 来自您的域,它会向您的服务器返回一个临时请求密钥。

  3. 鉴于您收到了请求密钥,您将其发送回 OAuth 提供者以获取用户的实际访问令牌。

现在,至于为什么需要请求密钥步骤,这是为了防止和帮助保护“坏人”尝试使用您的应用程序 ID 对其他用户进行虚假身份验证。通过向您发送请求令牌(您已批准的回调 URL),OAuth 提供者确信请求实际上来自您的服务器。

您当然可以发送回任何字符串而不是请求令牌,但您会很快从 OAuth 提供者那里收到错误消息,因为该请求令牌与任何已知应用程序的任何现有身份验证请求都不对应。

最后,我不清楚您所说的“验证请求令牌”是什么意思?您没有生成令牌,可能不了解生成请求令牌的算法。鉴于此,我不确定您将如何验证这一点。如果您担心验证第一步,请查看 Facebook OAuth 流程。在那里,他们建议发送请求密钥作为返回 URL 的一部分(作为查询字符串参数)。该请求密钥将返回到您的应用程序,然后您可以将其用作验证,实际上,这是对您提出的请求的响应。如何存储和跟踪请求密钥取决于您(会话、数据库)。在 PHP 示例中,他们使用“状态”变量来跟踪唯一/任意字符串: Facebook OAuth 服务器端登录示例(在 PHP 中)

于 2012-11-02T18:46:11.827 回答