同事和我一直在試圖理解jwt令牌如何驗證令牌,但是從我們的閱讀中我們似乎混淆了我們自己。驗證jwt令牌[rsa]
請有人可以幫助我確認思維是否正確
- 令牌使用的私鑰簽名。簽名是使用私鑰加密的頭部和有效載荷的組合,並作爲簽名的最後部分添加到jwt。
- 爲了驗證令牌,接收者可以使用公鑰來複制此過程。他們加密頭和有效載荷以查看它是否與簽名相同。請注意,這不是解密。接收者不解密令牌(這是我們不確定的主要事情)。 - 接收者不能發出新的令牌,因爲他們沒有私鑰來加密新令牌。
我已經閱讀了RS256和HS256上的jwt文檔,仍然在努力證實我的想法,因此這篇文章。
當您說要驗證時,客戶端使用提供的公鑰驗證該簽名與令牌b64u(hhhhhh).b64u(pppppp)的第一部分匹配._這部分是如何發生的? –
我修正了錯誤:'hhhhh'和'ppppp'在緊湊的JWT中的b64url中編碼。文字可能會混淆。 – pedrofb
客戶端解碼來自base64的簽名並驗證它與提供的公鑰(僞碼'verifyies = verify(signedData,b64_decode(signature),publicKey)',其中'signedData'等於'hhhhh.ppppp'。大多數編程語言本地支持數字簽名驗證(內部它將使用publicKey檢查簽名中包含的哈希值與給定signedData匹配) – pedrofb