我正在使用OAuth 2.0 for MVC,在此处找到:http://community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/18/oauth-2-0-for-mvc-two-legged-implementation.aspx
对于任何使用过此功能的人 - 我对RequestToken感到困惑。实现了一个控制器,可以让您获得一个请求令牌,该令牌在5分钟后到期,然后您将该令牌传回来获取AccessToken。但它永远不会检查请求令牌的有效性 - 似乎您可以传入您想要的任何访问令牌。 RequestToken在这里的想法是什么 - 您是否应该创建自己的方法来存储,引用,然后在5分钟内删除该令牌?
谢谢, 安迪
答案 0 :(得分:1)
这就是OAuth如何与您的应用程序的应用程序ID,应用程序密钥和有效域结合使用。这是一般的过程
您的应用程序使用您的应用程序ID和密码以及回调(返回Url)向OAuth提供程序发送请求。
OAuth提供程序获取请求,检查您的应用程序ID和密码,并验证回调网址是否来自您为应用程序指定的域。
2a上。如果回调网址不是来自您指定的域,则拒绝该请求并显示错误。
2b如果回调网址来自您的域,它会向您的服务器返回一个临时请求密钥。
鉴于您收到了请求密钥,请将其发送回OAuth提供商以获取该用户的实际访问令牌。
现在,关于请求密钥步骤到位的原因,这是为了防止并帮助保护“坏人”不要试图使用您的应用程序ID来错误地验证其他用户。通过向您发送请求令牌(您已批准的回调URL),OAuth提供商确信该请求实际来自您的服务器。
您肯定可以发送任何字符串而不是请求令牌,但是您很快就会从OAuth提供程序收到错误,因为该请求令牌与任何已知应用程序的任何现有身份验证请求都不对应。
最后,我不清楚'验证请求令牌'是什么意思?您没有生成令牌,可能没有深入了解生成请求令牌的算法。鉴于此,我不确定您将如何验证这一点。如果您担心验证第一步,请查看Facebook OAuth流程。在那里,他们建议发送请求密钥作为返回Url的一部分(作为查询字符串参数)。该请求密钥将返回到您的应用程序,然后您可以将其用作验证,实际上,这是对您所做请求的响应。如何存储和跟踪该请求密钥取决于您(会话,数据库)。在PHP示例中,他们使用'state'变量来跟踪唯一/任意字符串:Facebook OAuth Server Side Login Example (in PHP)