是否有任何库/ NPM模块/代码示例来验证和解码React Native中的JWT?有没有简单的方法来验证和解码React Native中的JWT?
我知道我可以手动完成。但我希望像node-jsonwebtoken存在。 (它在React Native中不起作用。)
https://github.com/auth0/jwt-decode只解码但不验证。
是否有任何库/ NPM模块/代码示例来验证和解码React Native中的JWT?有没有简单的方法来验证和解码React Native中的JWT?
我知道我可以手动完成。但我希望像node-jsonwebtoken存在。 (它在React Native中不起作用。)
https://github.com/auth0/jwt-decode只解码但不验证。
有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'头域中给出),因为验证其完整性在浏览器内相当棘手。手动检查后,如果您可以在源代码中对其进行硬编码,那更好。