Over on GitHub一个很有帮助的Google开发人员告诉我
to create a user session, your python backend server only needs a JWT library to verify the Firebase Auth token (signature and audience) in the request and extract the user info from the token payload.
我无法验证令牌。在
这就是我所处的位置;为了开始迁移,我按如下步骤进行:
我将Firebase Auth添加到Android应用程序中,同时在Firebase Auth正常工作之前仍在应用程序中保留Gitkit。现在我有两个登录按钮,一个登录到Firebase,一个用于“几乎不推荐使用”的Gitkit。
打开firebase.com网站我将Google项目导入到一个新的Firebase项目中,因此用户数据库是相同的。我已经设法在Android应用程序中使用Firebase Auth,能够以已知用户身份登录,并且可以通过调用mFirebaseAuth.getCurrentUser().getToken(false).getResult().getToken()
成功检索后端服务器所需的令牌。它包含与GitKit令牌相同的user_id
。
现在我试图用^{python-jose
库。在
在后端,在调用GitKit.VerifyGitkitToken()
之前,我现在打印出jose.jwt.get_unverified_header()
和{
我的问题在于验证。我无法使用jose.jwt.decode()
进行验证,因为我不知道我需要使用哪个键。在
jose.jwt.decode(token, key, algorithms=None, options=None, audience=None, issuer=None, subject=None, access_token=None)
我知道从头和'aud'字段也存储在索赔,如果有任何帮助。在
回到工程师的评论
verify the Firebase Auth token (signature and audience)
我如何利用我现有的信息做到这一点?我猜观众是声明中的“aud”字段,但我如何检查签名?在
一旦删除了服务器上的Gitkit依赖项,我将继续迁移。在
据我所见,GitKit库显然会向Google服务器发出“RPC”调用进行验证,但我可能错了。在
那么,哪一个是Gitkit令牌验证的密钥,也是Firebase令牌验证的密钥?在
可以获得钥匙
对于消防基地
https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com
对于Gitkit
https://www.googleapis.com/identitytoolkit/v3/relyingparty/publicKeys
使用google^{} 库使验证变得非常容易。在
但是如果您想使用^{} 而不是
oauth2client
,那么you first need to convert the PEM certificate into an RSA public key(更新:这个问题得到了修复,对于Firebase,这现在由库处理,向下滚动到这个注释前面的GitHub链接的末尾。不确定Gitkit)。这个公钥就是需要使用的密钥。并且访问群体应该从JWT头中提取而不是,而是硬编码到源代码中,在Firebase中,访问群体是项目id,在Gitkit中,它是OAuth 2.0客户端id之一,可以在Google开发人员控制台凭证部分找到。在JWT头中的
kid
用于选择适当的证书,该证书将用于获取用于执行验证的密钥。在相关问题 更多 >
编程相关推荐