【问题标题】:Is there any easy way to verify and decode a JWT in React Native?有什么简单的方法可以在 React Native 中验证和解码 JWT?
【发布时间】:2018-02-25 15:47:14
【问题描述】:

是否有任何库/NPM 模块/代码示例来验证和解码 React Native 中的 JWT?

我知道我可以手动完成。但我希望像node-jsonwebtoken 这样的东西存在。 (它在 React Native 中不起作用。)

https://github.com/auth0/jwt-decode 只解码不验证。

【问题讨论】:

    标签: javascript react-native jwt


    【解决方案1】:

    RSA-Sign JavaScript Library 可以满足您的需求,尽管它使用了一些用纯 JS 编写的相当大且速度较慢的加密库。

    如果您想稍微工作以获得更简单和更快的结果,请使用Wep Crypto API 让浏览器为您验证签名。确切的代码将取决于密钥算法和格式,但本质上是您解码 JWT 底部的 base64url 编码签名,然后调用 crypto.subtle.importKey 并以 ["verify"] 作为最后一个参数(以 JWK 格式传递密钥或你能得到什么),然后你使用生成的密钥来调用crypto.subtle.verify。您需要将(解码)令牌的签名转换为 ArrayBuffer,这可以通过以下方式完成:

    buffer = new Uint8Array([...signature].map(c => c.charCodeAt(0)))
    

    避免在验证签名之前通过同一网络获取密钥(如果密钥被“jku”引用或在令牌的“jwk”标头字段中给出),因为在内部验证其完整性相当棘手浏览器。如果您可以在手动检查后将其硬编码到源代码中,那就更好了。

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 2020-10-30
      • 2015-06-16
      • 2020-05-22
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      相关资源
      最近更新 更多