SSO 是什么

一句话总结

用户在一个地方登录一次,就能访问所有关联的应用,不用每个都单独输入账号密码。


🤔 为什么会有它 / 解决了什么问题

以前每个网站/应用都要单独注册账号、设密码。公司内部有 10 个工具,员工就要记 10 套密码。IT 部门要管 10 套账号的增删改。员工离职要逐一注销 10 个账号——任何一个漏掉就是安全隐患。

SSO 解决的就是这个”账号碎片化”问题:一套账号,通吃所有


🔍 具体原理 / 运作逻辑

SSO 由三个角色组成:

  1. IDP(身份提供者):存用户、管密码、负责说”这个人是这个人”。相当于公安局身份认证中心。
  2. SP(Service Provider / 服务提供者):各业务应用(Grafana、n8n、Outline),它们自己不存密码,信任 IDP 的判断。相当于商场里的各店铺。
  3. 认证协议:IDP 和 SP 之间的”通信语言”。目前最主流的是基于 OAuth 2.0 的 OIDC(OpenID Connect)。

流程:你打开 SP → SP 问你”你是谁”→ 跳转 IDP 登录页 → 你输入密码 → IDP 发一张”身份令牌”给 SP → SP 读令牌,知道你是谁 → 放行。


🧭 什么情况下会用到 / 什么场景会遇到它

  • 公司内部有多个工具(Dokploy、Grafana、n8n、Outline…)希望统一登录
  • 客户访问你的 SaaS 平台,一个账号用所有功能模块
  • 任何”登录一次,到处能进”的需求

⚖️ 副作用 / 代价 / 取舍

  • 单点故障:IDP 挂了,所有应用都登不进去。需要保证 IDP 的高可用
  • 安全集中化:IDP 被攻破 = 所有应用全暴露。IDP 的安全等级必须最高
  • 耦合性:每个新接入的应用都要配置 OIDC Client,不是即插即用

🕰️ 来历

  • SAML(老协议):2005 年 OASIS 标准
  • OAuth 2.0:2012 年 RFC 6749
  • OIDC:2014 年基于 OAuth 2.0 之上构建,由 OpenID Foundation 维护

🔗 关联 / 经常一起出现的概念

  • OIDC:SSO 最主流的实现协议,Frappe 正是用它做身份提供者
  • SSO 和 OIDC 的关系:SSO 是目标(单点登录),OIDC 是实现手段(怎么做到)
  • OAuth 2.0:OIDC 的底层框架,负责”授权”
  • ID Token:SSO 流程中传递”你是谁”的令牌

⚠️ 注意事项 / 常见误区

  • SSO ≠ OAuth 2.0。OAuth 是授权(允许 A 访问 B),OIDC 才是身份认证(证明你是谁)
  • 不是所有应用都支持 OIDC。选型时优先选支持 OIDC/SAML 的工具

📎 记忆锚点

一个公安局(IDP),给每家商场(SP)签发身份证(ID Token)。你进任何商场,亮一下身份证就行。


📝 更新日志

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