【发布时间】:2018-02-25 15:47:14
【问题描述】:
是否有任何库/NPM 模块/代码示例来验证和解码 React Native 中的 JWT?
我知道我可以手动完成。但我希望像node-jsonwebtoken 这样的东西存在。 (它在 React Native 中不起作用。)
【问题讨论】:
标签: javascript react-native jwt
是否有任何库/NPM 模块/代码示例来验证和解码 React Native 中的 JWT?
我知道我可以手动完成。但我希望像node-jsonwebtoken 这样的东西存在。 (它在 React Native 中不起作用。)
【问题讨论】:
标签: javascript react-native jwt
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”标头字段中给出),因为在内部验证其完整性相当棘手浏览器。如果您可以在手动检查后将其硬编码到源代码中,那就更好了。
【讨论】: