Encryption

JWT 登錄安全

  • February 24, 2019

我是安全新手,我想知道 JWT 是否足夠安全。

根據我在網上閱讀的內容,流程是這樣的:

流動

  1. 客戶端通過將其憑據發送給身份提供者來登錄。
  2. 身份提供者驗證憑據;如果一切正常,它會檢索使用者數據,生成包含將用於訪問服務的使用者詳細資訊和權限的 JWT,並在 JWT 上設置過期時間(可能無限制)。
  3. 很快…

第 1 部分不會因為未加密而易受攻擊,還是我遺漏了什麼?

就您遵循的 JWT / oath / wtv 身份驗證協議本身並沒有為使用者名/密碼提供任何保護而言,您的理解似乎是正確的。

讓我們舉一個著名的單點登錄 (SSO) 系統範例:Google 帳戶登錄頁面。

Google 帳戶登錄頁面的圖片

出於所有意圖和目的,這遵循您在問題中描述的流程,第一步是將您的使用者名和密碼發送到伺服器。網際網路的所有智慧都告訴您在輸入密碼之前尋找瀏覽器掛鎖,對嗎?

我認為這也是您問題的答案:JWT 工作流程不為密碼提供任何保護;您可以通過通過 HTTPS 執行第 1 步來實現。

不,如Wikipedia中所述:

“令牌由一方的私鑰(通常是伺服器的)簽名,因此雙方(另一方已經通過某種合適且值得信賴的方式擁有相應的公鑰)能夠驗證令牌是否合法。”

使用的典型加密算法是帶有 SHA-256 (HS256) 的 HMAC 和帶有 SHA-256 (RS256) 的 RSA 簽名。

所以第 1 部分確實是加密和安全的。

引用自:https://crypto.stackexchange.com/questions/63256