密码本身是最弱的一环,但短期内又取消不掉。所以现代系统的做法是叠两层: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 一个 token 通行多个应用

图里这一步是 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 的三个好处和一个致命风险

好处

  1. 用户体验 —— 少记 19 个密码
  2. 成本 —— IT 一处禁用,所有应用同步失效(员工离职关门只用 1 次)
  3. 攻击面 —— 入口少了,集中防守

致命风险:单点失守

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。“密码 + 安全问题”不算,因为都是”你知道的”——同一个钓鱼页能一次骗走。

强度排序(由弱到强)

  1. SMS 短信验证码 —— ,SIM swap 攻击能绕过,但有总比没有强
  2. TOTP App(Google Authenticator / Authy) —— ,基于时间戳算,断网也能用
  3. Push 通知(微软 Authenticator 弹窗让你选数字) —— ,反钓鱼
  4. 硬件 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 一来就被偷)
有没有开 MFAIdP 后台必须打开”强制 MFA”;光让用户”可选 MFA”等于没开

如果 AI 让你”自己实现登录”——直接拒绝。自己做密码哈希、session、cookie 安全、暴力破解防护这些,vibe-coder 必踩坑。永远用 IdP


6. 一个高频混淆:SSO ≠ 密码管理器

SSO密码管理器 (1Password, Bitwarden)
本质一个身份,多个应用互信每个应用还是各自的密码,只是帮你保管
谁拿 tokenIdP 给应用颁 token没有 token,密码管理器直接帮你填密码
离职禁用关掉 IdP 账号,所有应用立刻失效关掉密码管理器,密码还活着,得逐个去改
个人 vs 企业企业为主个人为主(企业也能用)

两者不冲突,可以叠着用。但不是同一件事


概念关联

这一篇放在系列里