密码本身是最弱的一环,但短期内又取消不掉。所以现代系统的做法是叠两层:SSO 处理”用户记不住那么多密码,索性全用同一个弱密码”的烂摊子,MFA 处理”密码迟早会被偷”的现实。两者不是替代关系,是配套——你让 AI 帮你接登录系统时,它八成会同时配上这两个。
上一篇 PII 4 条铁律讲的是”数据怎么放”,这一篇讲的是”门怎么开”。两件事都在解 CIA 三要素里的 C(机密性)——只有该看的人能看到。
一句话
- SSO = 一次登录,通行多个应用。少记密码,少出现”123456”。
- MFA = 登录时要两种以上证据。密码被偷也进不来。
- 结论:SSO 单独用是把鸡蛋放一个篮子,必须配 MFA,这才是正确姿势。
1. SSO 在解什么问题
问题:密码疲劳(password fatigue)
一个普通员工要登 20+ 个 SaaS。结果:
- 同一个密码到处用
- 用完忘了用一年都不改
- 写在便利贴上贴显示器
- 离职后 IT 还要一个一个去禁
这不是用户素质问题,是系统设计错了。让人记 20 个密码本来就是反人类。
SSO 的做法:把登录这件事委托给一个”身份提供商”
用户访问 Notion
→ Notion 说"你先去 Google 证明你是你"
→ 用户在 Google 登录(可能已经登过,直接放行)
→ Google 颁一个 token 给 Notion
→ Notion 凭 token 放行
→ 用户再访问 Slack —— 凭同一个 token 直接进
中间的”身份提供商”叫 IdP (Identity Provider)。常见的 IdP:Google Workspace、Microsoft Entra ID(原 Azure AD)、Okta、Auth0。

图里这一步是 SSO 的核心:用户在 IdP 登录一次,IdP 颁一个 access token,这个 token 就是后面所有应用的”通行证”——应用之间不再各自问密码,只验 token。
SSO 用的协议(看到名字别慌)
| 协议 | 用在哪 | 你需要知道的 |
|---|---|---|
| SAML | 企业内部 / SaaS 互通 | 老牌,XML 格式,B2B 默认选项 |
| OAuth 2.0 | ”用 Google 登录”这种第三方授权 | 不是登录协议,是授权协议,只是被当登录用了 |
| OIDC (OpenID Connect) | OAuth 2.0 之上的现代登录层 | 新项目首选,JSON 格式,移动端友好 |
| LDAP | 老式企业内网目录 | 在 on-premises 域控里用 |
vibe-coder 重点:你不需要知道协议怎么实现,但你要能看出 AI 给你接的是哪个。新项目用 OIDC,接 Google/微软/Apple 登录,基本就是它。
2. SSO 的三个好处和一个致命风险
好处
- 用户体验 —— 少记 19 个密码
- 成本 —— IT 一处禁用,所有应用同步失效(员工离职关门只用 1 次)
- 攻击面 —— 入口少了,集中防守
致命风险:单点失守
SSO 凭证一旦泄露,所有挂在它后面的系统全军覆没。Gmail 没了,Drive 没了,Slack 没了,Notion 没了。
这就是为什么 SSO 必须配 MFA——单靠密码做单点登录,等于把所有鸡蛋放一个篮子,还不上锁。
3. MFA 在解什么问题
问题:密码迟早会泄露
密码丢的方式:
- 数据泄露(LinkedIn 2012 / Yahoo 2013 / …) —— 你的密码早就在暗网了
- 钓鱼 —— 假登录页骗你打一遍
- 撞库 —— 你 A 站的密码被拖了,黑客拿去试 B 站 C 站
- 键盘记录器 / 木马
只要靠密码,就只是时间问题。
MFA 的做法:再验一种你不会丢的东西
要求用户拿出两种不同类别的证据:
- Something you know —— 密码、PIN、安全问题
- Something you have —— 手机收到的验证码、硬件 安全密钥、银行卡
- Something you are —— 指纹、人脸、虹膜(生物识别)
⚠️ 必须跨类别才算真 MFA。“密码 + 安全问题”不算,因为都是”你知道的”——同一个钓鱼页能一次骗走。
强度排序(由弱到强)
- SMS 短信验证码 —— 弱,SIM swap 攻击能绕过,但有总比没有强
- TOTP App(Google Authenticator / Authy) —— 中,基于时间戳算,断网也能用
- Push 通知(微软 Authenticator 弹窗让你选数字) —— 中,反钓鱼
- 硬件 Key(YubiKey、FIDO2) —— 强,几乎防钓鱼,高价值账号首选
Google 自己的数据:开 MFA 挡掉 99% 的自动化攻击。
4. SSO + MFA 怎么配合
[用户输用户名密码] ← SSO 入口
↓
[IdP 让你拿手机验一下] ← MFA 加强
↓
[通过,颁 token]
↓
[token 让你通行 N 个应用] ← SSO 体验
SSO 解决”少登录几次”,MFA 解决”每次登录都更难破”。
5. vibe-coder 接入登录时应该审计什么
AI 给你写”用 Google / Microsoft / Apple 登录”按钮时,90% 在用 OIDC。你不用看代码细节,但要看下面 4 点:
| 审计点 | 怎么看 |
|---|---|
| 协议是不是 OIDC / OAuth 2.0 | 看 redirect URL 里有没有 /oauth/ /authorize |
| 回调 URL 写死没有 | AI 经常留 http://localhost,生产环境必须改成 https 域名,不然攻击者能截 token |
| token 存哪了 | 看是不是放在 httpOnly cookie,不能放 localStorage(XSS 一来就被偷) |
| 有没有开 MFA | IdP 后台必须打开”强制 MFA”;光让用户”可选 MFA”等于没开 |
如果 AI 让你”自己实现登录”——直接拒绝。自己做密码哈希、session、cookie 安全、暴力破解防护这些,vibe-coder 必踩坑。永远用 IdP。
6. 一个高频混淆:SSO ≠ 密码管理器
| SSO | 密码管理器 (1Password, Bitwarden) | |
|---|---|---|
| 本质 | 一个身份,多个应用互信 | 每个应用还是各自的密码,只是帮你保管 |
| 谁拿 token | IdP 给应用颁 token | 没有 token,密码管理器直接帮你填密码 |
| 离职禁用 | 关掉 IdP 账号,所有应用立刻失效 | 关掉密码管理器,密码还活着,得逐个去改 |
| 个人 vs 企业 | 企业为主 | 个人为主(企业也能用) |
两者不冲突,可以叠着用。但不是同一件事。