用户身份认证流程——从注册到通过校验的会话 · 思维导图

用户身份认证流程——从注册到通过校验的会话. 可编辑的思维导图,以彩色分支、子主题和曲线连接呈现想法。 曲线表示联系;只有方向重要时才使用箭头。

用户身份认证流程,就是从某个人创建账号,一路到此后每一次请求都被信任的那条路径:凭据在存储之前先做哈希,登录时拿来比对,之后由会话令牌顶替密码。

用户身份认证流程——从注册到通过校验的会话 · 思维导图

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 中编辑此思维导图

思维导图中的更多内容