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

mik*_*ssy 8 jwt firebase firebase-authentication

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

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

但是,我还没有弄清楚在哪里可以配置 JWT-secret?我已经尝试了 firebase 控制台中显示的 API 密钥,我还尝试了在我的控制台https://console.developers.google.com上找到的服务器/客户端密钥。

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

有人让这个工作吗?我在哪里可以从 firebase 获取 JWT 秘密以在 API 后端进行配置?提前致谢。

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

这是我对 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);
}
Run Code Online (Sandbox Code Playgroud)

另请注意,我可以使用以下代码在 bash 命令行中模拟这一点:请注意,我从上面的 getIdToken() 获取令牌。

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

    curl http://localhost:8080/contacts -H "Authorization: Bearer $TOKEN"
Run Code Online (Sandbox Code Playgroud)

返回的是:{"message":"JWSError JWSInvalidSignature"}

对于 JWT-secret,我尝试了几个值,但似乎都不起作用。这包括来自 firebase 项目的“API 密钥”,以及尝试“生成密钥”,它下载一个新的 .json 文件,里面有一个“private_key”:沿着字符串。

Dou*_*son 3

您的服务帐户下载的文件中,使用该值来验证/解码您从...private_key获得的 JWT 令牌getIdToken()

使用第三方库验证 Firebase 身份验证 ID 令牌的步骤更详细地描述了它。

  • 有人可能在这里有解决方案吗?我一直在到处寻找,但还没有偶然发现秘密是在哪里定义的。 (2认同)