繁体   English   中英

如何在我的谷歌云 function 中验证 firebase jwt 令牌?

[英]How to validate the firebase jwt token in my google cloud function?

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

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

之后我用 firebase 调用云 function:

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

这个工作没有任何问题,我在我的 go function 中收到了 jwt 令牌。

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

我的function:

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 function 中的 firebase jwt 令牌?

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

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

请注意,您应该在同一个项目中设置 function,这样库才能正确查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM