gpt4 book ai didi

php - Firebase token 验证

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:51 24 4
gpt4 key购买 nike

我有一个 PHP 后端和一个 Android 客户端。使用客户端,用户可以通过 Firebase 使用 Google 或 Facebook 登录我的应用程序。我从 FirebaseUser 获取 token 并将其发送到我的服务器。很简单,第一部分(header)包含算法(RS256),第二部分(payload)包含所有与用户相关的数据。第三部分是前两个部分的签名,用于在我的后端启用验证。问题是,我不知道该怎么做。更具体地说是什么。

我用了JWT.io检查我的 token 并尝试验证它但没有运气。由于使用的算法是 RS256,因此应该通过公钥进行验证。但是什么公钥?我尝试使用我的应用程序的 keystore ,尝试使用 Google 的证书,但它一直说它无效。我知道 headerkid 字段是签名 key 的 ID,我应该寻找它,但我不知道在哪里。

Firebase 文档也无济于事。关于ID token verification有指南,但这毫无用处,因为它是 Java/Node.JS 并且它仍然没有说明任何关于公钥的信息。

所以问题是:我从哪里获得公钥?

最佳答案

好的,所以我深入研究了 Firebase Server SDK 的源代码并找到了公钥的位置: https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com

真的不知道为什么他们不能把它放在他们的网站上......

无论如何,我不确定,但我猜这些 key 每天都在变化(就像 OAuth2 key 一样),因此您必须不时地检查它们并将它们重新缓存在您的服务器上。

此外,您还必须检查以下值:

  • alg == "RS256"
  • iss : https://securetoken.google.com/<firebaseProjectID>
  • aud : <firebaseProjectID>
  • sub是非空的

Found these at this similar question (just scroll to the bottom of the answer), which was found by searching for that specific googleapis.com URL.

关于php - Firebase token 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37634305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com