2017-09-16 39 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'頭域中給出),因爲驗證其完整性在瀏覽器內相當棘手。手動檢查後,如果您可以在源代碼中對其進行硬編碼,那更好。

相關問題