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