Ger*_*ssy 5 php android jwt firebase firebase-authentication
我有一个 PHP 后端和一个 Android 客户端。使用客户端,用户可以使用 Google 或 Facebook(均通过 Firebase)登录我的应用程序。我从 获取令牌FirebaseUser
并将其发送到我的服务器。很简单,第一部分(标头)包含算法(RS256),第二部分(有效负载)包含所有用户相关数据。第三部分是前两部分的签名,用于在我的后端进行验证。问题是,我不知道该怎么做。更具体地说是什么。
我使用JWT.io检查我的令牌并尝试验证它,但没有成功。由于使用的算法是RS256,所以验证应该通过公钥来完成。但是什么公钥呢?我尝试使用我的应用程序的密钥库,尝试使用谷歌的证书,但它只是一直说它无效。我知道header的kid
字段是签名密钥的 ID,我应该查找它,但我不知道在哪里。
Firebase 文档也没有帮助。有一个关于ID 令牌验证的指南,但这毫无用处,因为它是 Java / Node.JS 并且它仍然没有提及任何有关公钥的信息。
所以问题是:我从哪里获取公钥?
好的,所以我深入研究了 Firebase Server SDK 的源代码并找到了公钥的位置: https ://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com
真的不知道为什么他们不能把它放在他们的网站上......
无论如何,我不确定,但我猜这些密钥每天都会发生变化(就像 OAuth2 密钥一样),因此您必须时不时地在服务器上检查并重新缓存它们。
此外,您还必须检查以下值:
alg == "RS256"
iss
:https://securetoken.google.com/<firebaseProjectID>
aud
:<firebaseProjectID>
sub
是非空的在这个类似的问题中找到了这些(只需滚动到答案的底部),这是通过搜索特定的googleapis.com URL 找到的。
归档时间: |
|
查看次数: |
3197 次 |
最近记录: |