我正在尝试建立使用oauth 1签名请求对用户进行身份验证的服务。该请求包括一个oauth令牌,签名,随机数和使用者密钥。服务器可以访问相应的机密,但是尚不清楚如何使用oauth gem来验证令牌并检索相应的用户。令牌最初是使用oauth-rails插件生成的,但是验证需要在与原始Rails应用程序不同的服务器上进行(但可以访问相同的基础数据库)。
如何使用oauth gem来完成此任务?
我已经查看了oauth和oauth-plugin gem的来源,但是我无法确定此验证实际上在哪里发生。我可以找到的几乎所有文档都涉及使用oauth gem作为使用者而不是提供者。
我终于想出了答案,所以我把它放在这里,希望将来能帮助到某个人。
从基础数据库检索AccessToken和ClientApplication对象,并检查现时和时间戳后,验证签名非常简单:
签名= OAuth :: Signature.verify(request,{})做| sigblock | [token.secret,ca.secret]结束
如果签名签出,则签名为真。请注意-如果您位于诸如nginx之类的http代理后面,则可能无法为https请求正确设置SERVER_PORT环境变量,因此您可能必须手动设置它。如果关闭了此请求(或请求的其他任何看起来很小的部分),则即使请求有效,也可能导致签名验证失败。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句