我正在使用 JWT 創建一個基于 Node js / Express js 的登錄注冊系統(我正在使用 JSONWEBTOKEN npm 庫)。
每當用戶登錄時,該用戶都會獲得一對訪問和重繪 令牌。現在要訪問資源,用戶需要將訪問令牌發送到后端。
現在,當我驗證用戶發送到后端的訪問令牌時,如果它沒有得到驗證,則會產生三種型別的錯誤(如 npm 中的 JSONWEBTOKEN 庫所述):
令牌過期錯誤:如果我收到此錯誤,那么在這種情況下,我將向前端發送回應以發送重繪 令牌路由的請求以獲取一對新的訪問和重繪 令牌。
JsonWebTokenError:如果我收到此錯誤,則表示訪問令牌格式錯誤。那么在這種情況下我該怎么辦?我應該注銷用戶還是應該向前端發送回應以發送請求以重繪 令牌路由以獲取一對新的訪問和重繪 令牌。<-- 這是我應該注銷用戶的主要問題嗎?
NotBeforeError:因為我沒有使用 nbf 宣告,所以在這種情況下我不需要擔心它。
請提供您有用的建議。同時構建后端安全起著重要作用。
uj5u.com熱心網友回復:
這很有用:JWT 重繪 令牌流。
簡而言之,如果重繪 令牌格式錯誤或過期,您應該注銷用戶。
根據 JWT 的思想,訪問令牌是短期令牌。當由于格式錯誤或過期而未通過驗證時,您必須將重繪 令牌發送到服務器以獲取新對。用戶繼續使用新的訪問令牌作業而不會中斷。
uj5u.com熱心網友回復:
如果 JWT 格式不正確,則只需通過回應 403 來阻止該呼叫。沒關系。然后應用程式決定是否重繪 令牌。
當用戶注銷時,即使它是 JWT,也請撤銷頒發的令牌。作為最佳實踐,JWT 也需要被撤銷。是的,JWT 是自我令牌,過期已經是它們自己的一部分。但是,如果用戶注銷并且他們的 JWT 仍然沒有過期,則意味著有人可以使用該令牌來呼叫不同的 API。所以這是一個安全漏洞。
為了避免這種情況,我們應該在后端維護 JTI 對該 JWT 的宣告,并使用與 JWT “exp”的值相同的 TTL。當用戶注銷時,我們必須清除那些 JTI 并通知 API 呼叫者這只是從他們的 API 網關放入一些事件服務應該得到通知并清除他們的側面快取令牌(如果有的話)并與身份系統進行交叉檢查(內省) .
這是我們必須設計系統以避免進一步的安全相關問題。
uj5u.com熱心網友回復:
首先是用戶將從前端注銷。
前端將向您的節點服務器發送請求并驗證令牌。服務器只會發送令牌過期或格式錯誤的回應,并基于該前端將執行操作。
如果令牌已過期,則請求新令牌。
令牌是否格式錯誤,然后根據您的要求,您可以向最終用戶顯示結果。您可以注銷用戶,也可以顯示未經授權的頁面。
假設您有基于角色的網站,并且一些未經授權的用戶正在嘗試訪問根級路由,那么您可以顯示未經授權的頁面。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/510353.html
