【问题标题】:Library for decoding JWT on client-side用于在客户端解码 JWT 的库
【发布时间】:2017-02-21 16:28:28
【问题描述】:

我正在开发一个将 JWT 令牌存储在 cookie 中的网站。我想要做的是,创建解码令牌并提取我需要的值并将其传递给我的同事编写的另一个 Javascript 的 Javascript。我的问题是,我可以从脚本中导入用于 JWT 令牌解码的客户端 javascript 库吗?

【问题讨论】:

  • 检查这个:jwt.io/#libraries 寻找 Javascript 部分
  • 如果您需要验证签名的 JWT 或解码加密的 JWT,@MikeCheel 的评论非常有用。但是,如果您只想读取未加密的 JWT,则只需按照 bhspencer 的答案中所述进行 base64 解码

标签: javascript jwt


【解决方案1】:

https://github.com/auth0/jwt-decode:jwt-decode 是一个小型浏览器库,可帮助解码 Base64Url 编码的 JWT 令牌。

【讨论】:

    【解决方案2】:

    JWT 只是一个点分隔的 base64 编码字符串。您只需要拆分点,然后使用 atob() 进行解码。您不需要外部库。

    例如

    var jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ";
    
    var tokens = jwt.split(".");
    
    console.log(atob(tokens[0]));
    console.log(atob(tokens[1]));
    

    【讨论】:

    • 谢谢,但我想它不适用于 UTF,对吗?
    • 这缺少验证。您应该验证 JWT,任何人都可以创建它们,但只有知道秘密的人才能创建使用秘密签名的令牌。
    • OP 询问“我想要做的是,创建解码令牌并提取我需要的值的 Javascript”。当然,还需要验证令牌上的签名,但这超出了本问题的范围。
    • @FastDeveloper 验证发生在服务器端,客户端的秘密会破坏 jwt 的目的
    猜你喜欢
    • 2017-01-06
    • 2018-05-18
    • 1970-01-01
    • 2016-05-29
    • 2016-11-22
    • 1970-01-01
    • 2017-06-24
    • 2019-06-19
    • 2017-10-02
    相关资源
    最近更新 更多