如何使用Google JWT验证Rails API

时间:2016-10-21 20:17:54

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

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

我目前正在使用此代码:

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

env var的描述如下:https://gist.github.com/Connorelsea/c6b91a4b4b6889294fd4e2fcacb06564

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

如果我不验证,我可以阅读JWT的内容。从JWT网站上可以解码,但也不能验证。

1 个答案:

答案 0 :(得分:0)

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

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