【问题标题】:How to authenticate a Rails API with Google JWTs如何使用 Google JWT 对 Rails API 进行身份验证
【发布时间】:2017-03-04 05:57:06
【问题描述】:

在前端,用户使用 React 和 Google 登录按钮登录到我的应用程序。 Google 将用户的 JWT 返回到前端的回调 URL,并进行编码。然后,我将每个请求中的这个 JWT 传递给 Rails API,并希望 Rails API 解码和验证这个 JWT,如果验证成功,则返回 API 端点应该提供的数据。

我目前正在使用此代码:

def google_public_key
  x509 = OpenSSL::X509::Certificate.new ENV["GOOGLE_CERT"]
  x509.public_key
end

环境变量描述如下:https://gist.github.com/Connorelsea/c6b91a4b4b6889294fd4e2fcacb06564

我收到此错误:OpenSSL::X509::CertificateError (nested asn1 error)

如果我不验证,我可以读取 JWT 的内容。在 JWT 网站上,它可以被解码,但也不能被验证。

【问题讨论】:

  • 您是否搜索过错误,即stackoverflow.com/questions/24263835/…
  • 是的。人们表达了格式问题,我们尝试了他们的修复。没有工作。
  • 看起来不仅仅是格式问题
  • 我从谷歌获得 JWT。使用谷歌登录按钮。所以我没有做任何自己制作的 JWT。

标签: ruby-on-rails ruby oauth oauth-2.0 google-oauth


【解决方案1】:

遇到同样的问题,通过在构造函数中将public_key设置为Pkey对象而不是字符串来解决,试试:

def google_public_key
  x509 = OpenSSL::X509::Certificate.new 
  x509.public_key = OpenSSL::PKey::RSA.new ENV["GOOGLE_CERT"]
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-19
    • 2016-05-18
    • 2013-06-24
    • 2020-03-25
    • 1970-01-01
    • 2016-04-07
    • 2020-04-22
    • 2018-07-21
    相关资源
    最近更新 更多