str*_*tek 1 javascript jwt firebase
atob
这样的字符串将失败。我正在使用Firebase进行身份验证。我想读取(而不是验证)ID令牌的有效负载。我需要它来显示/隐藏UI中的内容,并且我使用了firebase文档中描述的方法。
但是,在某些情况下(我只有在使用自己的Facebook帐户登录时才遇到这种情况),令牌的有效载荷包含_
,因此不会被base64解码。因此,调用atob
它时出现错误。
这怎么可能?通过阅读JWT文档,我的理解是有效负载必须使用base64编码。除下划线外,所有字符实际上都是有效的base64字符。
但是,当我将其发送到firebase函数并对其进行调用时,该令牌已成功验证并解码admin.auth().verifyIdToken(idToken)
。
带下划线字符的JWT令牌的有效载荷是否有效?据我了解,它不能,因为它必须是base64编码的。
JWT令牌是base64url编码的,与base64略有不同。它改变了+
以-
和/
同_
和消除拖尾=
如果不是,为什么firebase有时会生成这样的令牌,为什么firebase Admin SDK可以对其进行验证和解码?
_
是有效的字符。往上看
如果是,请在哪里记录
JWT表示为由句点(。)字符分隔的一系列URL安全部分。每个部分都包含一个base64url编码的值。
我如何在客户端上的javascript中读取有效负载(未经验证),因为atob在这样的字符串上将失败。
只需更换-
与+
和_
与/
得到一个base64。请参阅从此处提取的示例函数
function Base64DecodeUrl(str){
str = (str + '===').slice(0, str.length + (str.length % 4));
return str.replace(/-/g, '+').replace(/_/g, '/');
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
456 次 |
最近记录: |