用戶身分驗證流程——由註冊到已驗證的工作階段 · 心智圖

用戶身分驗證流程——由註冊到已驗證的工作階段. 可編輯嘅心智圖,以彩色分支、子題目同曲線連結呈現概念。 曲線表示關聯;只有方向重要時先用箭嘴。

用戶身分驗證流程,就是由某人建立帳戶一直到之後每一個請求都獲得信任的那條路徑:憑據在儲存之前先經雜湊,登入時再作核對,之後由一個工作階段權杖代替密碼。

用戶身分驗證流程——由註冊到已驗證的工作階段 · 心智圖

The interactive MindMap canvas for this explanation — every lane, row and arrow above is a real QueryChart diagram you can open and edit.

點樣閱讀呢張心智圖

  • 由中央主題開始,沿住彩色分支探索相關概念。
  • 曲線表示關聯;只有方向重要時先用箭嘴。

Register

呢個分支匯集 “User creates an account”, “The password is salted and hashed before it is ever stored — the service cannot recover the plaintext, and a leaked database does not leak credentials.”, “Hashed credential is stored in the database”, “Client sends email and password”.

Sign in

呢個分支匯集 “User signs in with credentials”, “Client forwards them to the auth service”, “Hash matches the stored one?”.

Session

呢個分支匯集 “Auth service creates a session”, “Client stores the session token”.

Protected requests

呢個分支匯集 “The token proves the session without re-entering the password. Multi-factor authentication inserts a second check at sign-in when the risk profile demands it.”, “Access granted for the session”.

Failure path

呢個分支匯集 “Sign-in denied”.

跨分支關聯

密碼在儲存之前先經雜湊——資料庫持有的是一個加鹽的單向雜湊值,永遠不是明文。

登入時比對的是雜湊值,所以身分驗證服務本身也還原不出儲存的密碼。

工作階段權杖在之後的請求裡取代了密碼,而這正是身分驗證得以在大規模下實際可行的原因。

儲存與驗證是分處不同泳道的兩件事,所以可以各自受到保護。

無論那個權杖是伺服器端的工作階段還是一個 JWT,這條流程的形狀都一樣——權杖本身的機制見 JWT 那張圖解。

Key relationships and takeaways

  • 密碼在儲存之前先經雜湊——資料庫持有的是一個加鹽的單向雜湊值,永遠不是明文。
  • 登入時比對的是雜湊值,所以身分驗證服務本身也還原不出儲存的密碼。
  • 工作階段權杖在之後的請求裡取代了密碼,而這正是身分驗證得以在大規模下實際可行的原因。
  • 儲存與驗證是分處不同泳道的兩件事,所以可以各自受到保護。
  • 無論那個權杖是伺服器端的工作階段還是一個 JWT,這條流程的形狀都一樣——權杖本身的機制見 JWT 那張圖解。

When to use this visual

  • 在一支新團隊設計他們第一個登入之前,先教會他們身分驗證安全的形狀。
  • 覆核一條身分驗證流程有沒有那些經典缺陷——儲存明文、比對明文、信任用戶端。
  • 為一場關於多重因素驗證的討論定調,並釐清它接入流程的位置。

運作方式

  1. 調整中央主題

    按項目或課堂修改中央主題名稱。

  2. 擴展分支

    編輯概念並加入例子或註解。

  3. 連結相關概念

    畫出跨分支連結;只有方向重要時先用箭嘴。

常見問題

儲存密碼的安全做法是甚麼?

永遠不要儲存密碼本身。應該儲存一個加鹽的雜湊值——把密碼加上一段隨機的鹽之後套用一個單向函數——然後把明文丟棄。登入時,把傳入的密碼以同樣方式雜湊,再比對兩個雜湊值。如果資料庫外洩,攻擊者拿到的是他們無法逆轉的雜湊值,而這正是這張圖解裡那兩個雜湊方框要展示的性質。

雜湊與加密有甚麼分別?

加密是可逆的——有密鑰就可以還原出原本的值。雜湊是單向的——沒有密鑰,也沒有回頭路。對密碼而言你要的是雜湊,因為你以後再也不需要那段明文,只需要有能力核對。這張圖解寫的是雜湊而不是加密,正是為了這個理由;把密碼加密是一個常見而且危險的混淆。

工作階段權杖怎樣取代密碼?

登入成功之後,身分驗證服務會建立一個工作階段,並把一個權杖交給用戶端——可以是一個隨機值,也可以是一個已簽章的 JWT——用來代表這位已通過驗證的用戶。受保護的請求會帶著這個權杖,伺服器驗證它,而不會再要求輸入密碼。這正是身分驗證在重複的請求之下仍然可行的原因,也是權杖的有效期才是真正安全邊界的原因。

多重因素驗證在這條流程裡的位置在哪裡?

MFA 是登入時的一項額外檢查,在密碼通過核對之後、工作階段建立之前:用戶提供第二個因素——一次性驗證碼、驗證器應用程式、硬件密鑰。這張圖解的登入直欄就是這一步接入的地方。MFA 不會改動雜湊或工作階段的機制;它是在「雜湊值是否與儲存的一致?」這一個決策上加一重證明,把門檻抬高。

喺 QueryChart 編輯呢張心智圖

喺可編輯畫布開啟心智圖。移動概念、加入分支同畫連結。

喺 QueryChart 編輯呢張心智圖

心智圖的更多內容