javascript - 有什么简单的方法可以在 React Native 中验证和解码 JWT?

标签 javascript react-native jwt

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

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

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

最佳答案

RSA-Sign JavaScript Library这就是你想要的,尽管它使用了一些用纯 JS 编写的相当大和慢的加密库。

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

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

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

关于javascript - 有什么简单的方法可以在 React Native 中验证和解码 JWT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46256711/

相关文章:

ios - 用图像 react 原生 iOS 推送通知

node.js - JWT token 在验证时始终无效

node.js - 延长 Firebase OAuth2 访问 JWT token 中的到期时间和日期

javascript - JQuery 移动面板,单击“返回”将重定向到上一页,而不是折叠面板

javascript - 使用 AngularJS 将表单发布到新窗口

javascript - AngularJS:forEach 和 http 获取数据 - 等待所有内容加载完毕

javascript - React Native - 在 Flatlist 中单选

objective-c - 在 Swift 中实现 RCTEventEmitter 但未设置桥接异常

javascript - 如果链接和窗口中的 URL 匹配,则添加一个类

java - 带有 Angular 6 的 Spring Boot JWT CORS