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 概述:SSO 的完整拆解
  • OIDC:OIDC 协议的详细说明
  • 认证协议:OIDC 是协议的一种,还有其他协议(SAML)

📎 记忆锚点

SSO = 吃饱。OIDC = 做饭。SAML = 叫外卖(也能吃饱,但流程复杂)。Cookie = 吃零食(同域能用,跨域不行)。


📝 更新日志

日期改动原因
2026-07-09首次创建Frappe SSO/OIDC 集成准备