加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Google OAuth JWT签名验证

发布时间:2020-12-13 13:24:28 所属栏目:PHP教程 来源:网络整理
导读:我正在 PHP项目中创建自己的google oauth实现.除非我在访问令牌请求( https://accounts.google.com/o/oauth2/token)之后尝试验证收到的JWT,否则一切正常. 对于JWT解码我使用 firebase/php-jwt 类. 它解码完美,但如果我打开$verify选项(decode()方法3-rd arg)
我正在 PHP项目中创建自己的google oauth实现.除非我在访问令牌请求( https://accounts.google.com/o/oauth2/token)之后尝试验证收到的JWT,否则一切正常.

对于JWT解码我使用firebase/php-jwt类.

它解码完美,但如果我打开$verify选项(decode()方法3-rd arg),我得到:签名验证失败异常抛出.

我的猜测是,如果我将错误的密钥传递给decode()方法.当签名生成完成后,它稍后用于hash_hmac()函数.

所以我的问题是:我应该将什么密钥传递给Google OAuth JWT上下文进行签名验证?

从 https://developers.google.com/accounts/docs/OAuth2Login#validatinganidtoken开始推荐的方法:

“我们建议您从https://www.googleapis.com/oauth2/v1/certs检索Google的公钥,并在本地执行验证.

由于Google不经常更改其公钥(大约每天一次),因此您可以缓存它们,并且在绝大多数情况下,比使用TokenInfo端点更有效地执行本地验证.这需要检索和解析证书,并进行适当的加密调用以检查签名.幸运的是,有各种语言的调试良好的库可以实现这一目标.“

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读