如何在我的谷歌云功能中验证firebasejwt令牌



用户通过在前端进行身份验证

const googleAuthProvider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(googleAuthProvider);

之后,我调用了一个带有可调用firebase的云函数:

const nodeStateCall = functions.httpsCallable('myFunction');
nodeStateCall().then(...);

这工作起来没有任何问题,我在go函数中收到了jwt令牌。

我尝试了许多不同的变体来验证此令牌。我现在使用的函数是google.golang.org/api/idtoken包中的idtoken.Validate()

我的功能:

func verifyIdToken(idToken string)(tokenInfo *idtoken.Payload, err error) {
log.Print("running verify Token")
splitToken :=  strings.Split(idToken, "Bearer ")[1]
log.Print("split Token:"+splitToken)
tokenInfo, err = idtoken.Validate(context.Background(),splitToken,"MYAUDIENCE")
if err != nil {
log.Print("error from tokenInfoCall.Do()")
log.Print(err)
return nil, err
}
log.Print("Finished verify token.")
return tokenInfo, nil
}

但我不断地得到";无效值";当我发送令牌时。

我还尝试了oauth2服务:

oauth2Service, err := oauth2.NewService(context.Background())
tokenInfoCall := oauth2Service.Tokeninfo()
tokenInfoCall.IdToken(splitToken)
tokenInfo, err := tokenInfoCall.Do()

也没用。

我需要做些什么来验证go函数中的firebasejwt令牌?

因为您正在使用firebase服务,所以需要使用它来验证您的令牌:

https://firebase.google.com/docs/auth/admin/verify-id-tokens#verify_id_tokens_using_the_firebase_admin_sdk

请注意,您应该在同一个项目中设置函数,以便库能够正确查询。

相关内容

  • 没有找到相关文章

最新更新