【问题标题】:How do I use the oauth gem to validate a token passed into the request?如何使用 oauth gem 验证传递给请求的令牌?
【发布时间】:2014-05-22 17:35:32
【问题描述】:

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

如何使用 oauth gem 来完成此操作?

我查看了 oauth 和 oauth-plugin gems 的源代码,但我不知道这个验证实际发生在哪里。我能找到的几乎所有文档都提到使用 oauth gem 作为消费者,而不是提供者。

【问题讨论】:

    标签: ruby-on-rails ruby oauth


    【解决方案1】:

    我终于想出了这个问题的答案,所以我把它放在这里,希望将来能帮助别人。

    一旦您从底层数据库检索了 AccessToken 和 ClientApplication 对象并检查了 nonce 和时间戳,验证签名就像这样简单:

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多