如何使用oauth gem验证传递给请求的令牌?

时间:2014-05-22 17:35:32

标签: ruby-on-rails ruby oauth

我正在尝试构建一个使用oauth 1签名请求对用户进行身份验证的服务。该请求包括oauth令牌,签名,nonce和使用者密钥。服务器可以访问相应的机密,但不清楚如何使用oauth gem来验证令牌并检索相应的用户。该令牌最初是使用oauth-rails插件生成的,但验证需要在与原始rails应用程序不同的服务器上进行(但可以访问相同的底层数据库)。

如何使用oauth gem来实现这一目标?

我已经查看了oauth和oauth-plugin宝石的来源,但是我无法告诉这个验证实际发生在哪里。我能找到的几乎所有文档都指的是将oauth gem用作消费者,而不是提供者。

1 个答案:

答案 0 :(得分:0)

我终于找到了答案,所以我会把它放在这里,以期在将来帮助某人。

从底层数据库中检索AccessToken和ClientApplication对象并检查nonce和timestamp后,验证签名就像以下一样简单:

signature = OAuth :: Signature.verify(request,{})do | sigblock |   [token.secret,ca.secret] 端

如果签名签出,签名将为真。注意 - 如果您在http代理(例如nginx)后面,可能无法为https请求正确设置SERVER_PORT环境变量,您可能必须手动设置它。如果此(或请求的任何其他看似微小的部分)关闭,即使请求有效,也可能导致签名验证失败。