您从Firebase哪里找到/找到JWT-Secret?

时间:2019-10-15 16:57:56

标签: firebase firebase-authentication jwt-auth

我正在为我的Web /移动应用程序使用Firebase,现在也有一个我也想使用的后端API。 该API需要JWT令牌来验证请求并进行设置,我需要指定用于加密/解密令牌的JWT机密。

在firebase中,我相信我使用 const令牌=等待firebase.auth()。currentUser.getIdToken();这就是我传递给API的内容。

但是,我还没有弄清楚要配置JWT秘密的位置吗?我尝试了Firebase控制台中显示的API密钥,还尝试了在控制台上https://console.developers.google.com上找到的服务器/客户端密钥。

但是,无论如何,在尝试向API调用发出请求时,都会收到JWSInvalidSignature。

有人能做到这一点吗?在哪里可以从Firebase获取JWT秘密以在API后端上进行配置?预先感谢。

以下是详细信息: 1.我正在使用一个名为postGrest的服务,该服务在postgres DB之上自动创建一个Web API。为了对请求进行身份验证,您可以通过指定一个称为“ role”的自定义声明来配置服务,还需要指定JWT-secret,以便它可以对令牌进行解码。

这是我对API的简单调用:

           const fetchdata = async () => {
           const token  = await firebase.auth().currentUser.getIdToken();

        let axiosConfig = {
           headers: {
              'Authorization': 'Bearer' + token
                   } 
             }
       const data = await axios.get(`http://localhost:8080/users`, 
       axiosConfig);
}

另外请注意,我可以使用以下代码在bash命令行中对此进行仿真:请注意,这里是从上面的getIdToken()获取令牌。

   export TOKEN="eyJhbGciOiJSUzI1NiIsImtpZCI6ImQ2YzM5Mzc4YWVmYzA2YzQyYTJlODI1OTA0ZWNlZDMwODg2YTk5MjIiLCJ0eXAiOiJKV1QifQ.eyJ1c2VyaWQiOiI1NSIsImlzcyI6Imh0dHBzOi8vc2VjdXJldG9rZW4uZ29vZ2xlLmNvbS9wb3N0Z3Jlc3QtYjRjOGMiLCJhdWQiOiJwb3N0Z3Jlc3QtYjRjOGMiLCJhdXRoX3RpbWUiOjE1NzExNTIyMjQsInVzZXJfaWQiOiJNMXZwQ3A2ZjlsaFdCblRleHh1TjlEdXIzUXAyIiwic3ViIjoiTTF2cENwNmY5bGhXQm5UZXh4dU45RHVyM1FwMiIsImlhdCI6MTU3MTE1OTQ0NSwiZXhwIjoxNTcxMTYzMDQ1LCJlbWFpbCI6InNwb25nZWJvYkBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImZpcmViYXNlIjp7ImlkZW50aXRpZXMiOnsiZW1haWwiOlsic3BvbmdlYm9iQGdtYWlsLmNvbSJdfSwic2lnbl9pbl9wcm92aWRlciI6InBhc3N3b3JkIn19.nKuovs0Gx_ZKp17dI3kfz6GQofIMEOTA8RqTluwEs-5r-oTbKgpG33uS7fs7txVxvWIb_3fbN3idzfDHZevprMkagbHOd73CxTFBM7pr1bD2OKSK9ZPYfSt9OhvgJL51vBN3voLcNAb5iWVVl2XMqkcXeDoBi8IOKeZr27_DsRx48GSi7HieHWscF1lujSEr2C9tdAek3YyNnr3IcGI8cTSPHPaIbYl-8CaHQO2fUiGHEAaD7sqHxp3otJio56zOoNAy44P_nwORlMFZC0Rm8SaATpbmIkgbGYWHZHty70lmlYGVHTuM_hr2s7z2YhAjuacvBMgusZpyoVnoe3FQeA"

    curl http://localhost:8080/contacts -H "Authorization: Bearer $TOKEN"

返回的内容是:{“ message”:“ JWSError JWSInvalidSignature”}

对于JWT机密,我尝试了几个值,但似乎没有一个起作用。这包括firebase项目中的“ API密钥”,以及尝试使用“生成密钥”来下载新的.json文件,并且在其中有一个“ private_key”:沿着字符串。

1 个答案:

答案 0 :(得分:0)

使用第三方库验证Firebase身份ID令牌的说明为here。它说可以在这里找到公钥:

https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com