2017-09-16 95 views

回答

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'头域中给出),因为验证其完整性在浏览器内相当棘手。手动检查后,如果您可以在源代码中对其进行硬编码,那更好。

相关问题