SSO 和 OIDC 的关系
一句话总结
SSO 是目标(用户登录一次,到处能用),OIDC 是实现手段(用什么协议、什么流程来达到这个目标)。就像”吃饱”是目标,“做饭”是实现手段——OIDC 是众多做饭方式里最好吃的那种。
🤔 为什么会有它 / 解决了什么问题
SSO 是一个需求:我不想记 10 个密码。
但怎么实现这个需求?有很多种方法:
- 共享 Cookie(同域名下最简单)
- SAML(企业级老方案)
- OIDC(现代 Web 标准——我们选的)
OIDC 之所以主流,是因为它比 SAML 简单(JSON 而不是 XML),比纯 Cookie 安全(有加密令牌和过期机制),而且几乎所有现代应用都支持。
🔍 具体原理 / 运作逻辑
SSO 是骨架,OIDC 是血肉:
SSO 描述"要有什么":
├── 一个 IDP 管身份
├── 多个 SP 信任 IDP
└── 一个协议让它们通信
OIDC 定义"怎么做":
├── .well-known/openid-configuration 告诉 SP 端点在哪里
├── Authorization Code Flow 定义登录步骤
├── ID Token (JWT) 定义身份信息的格式
└── PKCE 加固防止攻击
如果你把 SSO 想象成一栋房子,OIDC 就是盖房子的施工图纸和标准——告诉工人墙多厚、钢筋怎么扎、水管怎么走。
🔗 关联 / 经常一起出现的概念
📎 记忆锚点
SSO = 吃饱。OIDC = 做饭。SAML = 叫外卖(也能吃饱,但流程复杂)。Cookie = 吃零食(同域能用,跨域不行)。
📝 更新日志
| 日期 | 改动 | 原因 |
|---|---|---|
| 2026-07-09 | 首次创建 | Frappe SSO/OIDC 集成准备 |