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

标签 firebase firebase-authentication jwt-auth

我正在为我的网络/移动应用程序使用 firebase,现在我也希望使用一个后端 API。
API 需要一个 JWT token 来验证请求并设置它,我需要指定用于加密/解密 token 的 JWT secret 。

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

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

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

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

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

这是我对 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() 获取 token 。
   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 的 secret ,我尝试了几个值,但似乎没有一个有效。这包括来自 firebase 项目的“API key ”,以及尝试下载新 .json 文件的“生成 key ”,其中有一个“private_key”:即字符串。

最佳答案

来自 your service account下载的文件,使用 private_key验证/解码您从 getIdToken() 获得的 JWT token 的值...
steps for using a third-party library要验证 Firebase 身份验证 ID token ,请更详细地描述它。

关于firebase - 您从 Firebase 哪里获取/找到 JWT-Secret?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58399462/

相关文章:

android - com.firebase :firebase-client-android: VS com. google.firebase:firebase-核心

java - 从 firebase 实时数据库中获取 JSON 数组。安卓

javascript - Firebase 配置对象发布在 github 上

mysql - 如何解决错误 500-[object SequelizeInstance :users] mysql Authentication

python - Firebase(客户端与服务器端)

ios - AppDelegate 不符合 Swift 3 中的协议(protocol) 'GIDSignInDelegate'

java - Firebase 身份验证错误 Android Studio

firebase - Firebase允许来自同一电子邮件地址的多个帐户

database - 我是否需要对存储在数据库中的刷新 token 进行哈希处理?

django - 如何以与供应商无关的方式从移动应用程序实现二维码交叉登录作为网站或 web 应用程序的身份验证方法?