从 Web SDK 访问 Firebase 自定义令牌声明

问题描述 投票:0回答:3

如果我有一个带有某些声明的自定义令牌,并且我使用它登录 Firebase,是否有任何方法可以使用 Web SDK 从应用程序内部访问这些声明?

例如,如果我的自定义令牌是这样的

{
 :iss => $service_account_email,
 :sub => $service_account_email,
 :aud => "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
 :iat => now_seconds,
 :exp => now_seconds+(60*60), # Maximum expiration time is one hour
 :uid => uid,
 :claims => {:premium_account => is_premium_account}
}

我想知道是否有类似的内容(从应用程序内部):

firebase.auth.token.claims.premium_account

我在文档中没有找到类似的内容。

firebase firebase-authentication
3个回答
5
投票

看起来你想要

getIdTokenResult
:

await firebase.auth().currentUser.getIdTokenResult()

1
投票

claims
嵌入在代币中。

以下是在 Web 客户端上使用

jwt-decode
从令牌中提取声明的示例代码:

import jwt_decode from './jwt-decode';

firebase.auth().currentUser.getToken().then((token) => {
    console.log(token);
    console.log(jwt_decode(token));
});

0
投票

这是相关文档:https://firebase.google.com/docs/auth/admin/custom-claims

我认为其要点是,一旦您通过后端代码(admin sdk 或 firebase 函数)将自定义声明附加到用户,您就可以对 currentUser 令牌进行 base64 解码。 该文档引用了一篇关于 javascript base64 解码的 Mozilla 文章:https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

您可以 JSON.parse 解码后的令牌,您的自定义声明将显示在那里。文档对此非常好。

© www.soinside.com 2019 - 2024. All rights reserved.