用户身份认证流程——从注册到通过校验的会话
用户身份认证流程,在一张交互式画布上讲清楚:创建账号、密码哈希与存储、登录、创建会话,以及校验受保护的请求。
用户身份认证流程,就是从某个人创建账号,一路到此后每一次请求都被信任的那条路径:凭据在存储之前先做哈希,登录时拿来比对,之后由会话令牌顶替密码。
用户身份认证流程——从注册到通过校验的会话
The interactive FlowJam canvas for this explanation — every lane, row and arrow above is a real QueryChart diagram you can open and edit.
How to read this visual
- 从左到右读三列:注册、登录、会话。
- 四条泳道就是四个参与方,密码从不离开上面三条——只有哈希值会到达数据库那条泳道。
- “哈希与存储的一致?”这个决策把登录分成会话路径和“登录被拒绝”那条拒绝分支。
注册
“用户创建账号”和“客户端发送邮箱和密码”一起汇入“认证服务对密码做哈希”——密码从这一刻起就不可还原了。“哈希后的凭据存入数据库”是注册的终点:数据库此时握着的是一个加盐哈希,方框上的注释说明服务无法还原明文,而这正是做哈希的意义。
登录
“用户用凭据登录”和“客户端把凭据转发给认证服务”把旅程的前半段重演一遍,而“哈希与存储的一致?”就是那次校验:传进来的密码用同样的方式做哈希,再拿去比对。“否”这条分支终于“登录被拒绝”;“是”这条分支继续往下创建会话。
会话
“认证服务创建会话”签发那个用来取代密码的令牌,“客户端保存会话令牌”把它交到客户端,“受保护的请求携带令牌;服务器校验它”则是这套系统的稳定状态——每一个受保护的请求都用令牌自证。“在该会话期内授予访问权”合上整条流程:用户是在整个会话的有效期内通过了认证,而不是只针对某一次请求。
Key relationships and takeaways
- 密码在存储之前先做哈希——数据库里放的是加盐的单向哈希,绝不是明文。
- 登录比对的是哈希,所以连认证服务自己也无法还原存下来的密码。
- 之后的请求由会话令牌顶替密码,这正是身份认证在大规模下依然可行的原因。
- 存储和校验分处不同的泳道,是两件不同的事,因此可以分别加以保护。
- 无论令牌是服务端会话还是 JWT,流程的形状都一样——令牌本身的机制见 JWT 那张图解。
When to use this visual
- 在一支新团队动手设计他们的第一个登录之前,先教会他们身份认证应有的安全形状。
- 对照审查一条认证流程里的经典缺陷——明文存储、明文比对、信任客户端。
- 为一场关于多因素认证的讨论定下基准:它究竟插在流程的哪个位置。
运作方式
把参与方改名成你的系统
把客户端应用和认证服务换成你真实的组件——你的 Web 应用、你的身份提供方(IdP)——并补上这张通用图没有画出来的那些。
加上多因素认证
在登录处插入一步 MFA,位置在哈希检查之后、创建会话之前,并为第二因素的校验单开一条分支。
画出密码重置路径
从登录决策上引出一条重置分支——忘记密码、重置令牌、设置新密码——每一条都落在一个明确的状态上。
标注令牌的生命周期
在会话那个方框上写明你的令牌过期、吊销和刷新规则;如果你签发的是 JWT,就把 JWT 那张图解也关联上去。
常见问题
存储密码的安全做法是什么?
绝不要存密码本身。存一个加盐的哈希——把密码加上一个随机盐值之后过一遍单向函数——然后丢掉明文。登录时用同样的方式对传进来的密码做哈希,再比对两个哈希。如果数据库泄露了,攻击者拿到的是无法逆推的哈希值,而这正是图中那两个哈希方框要展示的性质。
哈希和加密有什么区别?
加密是可逆的——有密钥就能还原出原值。哈希是单向的——没有密钥,也没有回头路。对密码要用哈希,因为你此后再也不需要明文,只需要能够校验。图里写的是“做哈希”而不是“加密”,原因就在这里;把密码加密存起来是一种常见而危险的混淆。
会话令牌是怎么顶替密码的?
登录成功之后,认证服务创建一个会话,并把一个令牌交给客户端——可能是一串随机值,也可能是一个签了名的 JWT——它代表这个已通过认证的用户。之后的请求带着这个令牌,服务器校验它,而不再要求重新输入密码。正是这一点让身份认证在反复发生的请求面前变得可行,也正因如此,令牌的过期时间才是真正的安全边界。
多因素认证在这条流程里位于何处?
MFA 是登录处的一道额外检查,位置在密码校验之后、创建会话之前:用户提供第二个因素——一次性验证码、身份验证器应用、硬件密钥。图中的登录那一列就是这一步插入的地方。MFA 不改变哈希或会话的机制;它是在“哈希与存储的一致?”这一个决策上,通过增加第二重证明来抬高门槛。
在 QueryChart(FlowJam)中编辑这张图解
把上面这张身份认证画布原样打开成你自己的图表,把各个参与方改名成你的系统,并补上你真实的管控措施。