知识库
什么是单点登录(SSO)?原理、协议和落地步骤
发布
单点登录(Single Sign-On,SSO)是指用户在多个互相信任的系统之间只需要登录一次。它解决的是“系统越来越多、密码越来越多”的问题。
为什么需要单点登录
一家中等规模的企业,员工每天要用的系统往往有十几个:OA、邮箱、ERP、CRM、代码仓库、项目管理、BI 报表,再加上各种 SaaS。如果每个系统都有自己的账号密码,员工要么记不住而频繁找回密码,要么所有系统用同一个弱密码;IT 部门在员工入职时要逐个系统开账号,离职时又经常漏掉几个,留下安全隐患。
单点登录把“验证用户是谁”从各个业务系统里拿出来,交给一个统一的认证中心。用户只在认证中心输入一次密码,之后访问其他系统时自动完成登录;员工离职时,只要在认证中心停用一次,所有系统同时失效。
单点登录的基本原理
不管用哪种协议,单点登录的流程都差不多:
- 用户访问业务系统 A,A 发现用户没有登录,把浏览器重定向到认证中心。
- 认证中心发现用户也没有登录,显示登录页;用户输入密码,必要时再完成多因素认证。
- 认证中心在自己的域名下记住用户的登录状态(会话),然后把浏览器带回系统 A,并附上一张一次性的票据或授权码。
- 系统 A 拿票据向认证中心换取用户信息或令牌,确认身份后建立自己的会话。
- 用户再访问系统 B 时,B 同样把用户带到认证中心;这次认证中心发现用户已经登录,不再显示登录页,直接把票据发给 B。用户感觉不到这一步,就已经登录了 B。
关键在于第三步:登录状态保存在认证中心,而不是业务系统里。所以即使系统 A 和 B 在不同的域名下、彼此不共享 Cookie,也能实现单点登录。
常用的单点登录协议
- OpenID Connect(OIDC):在 OAuth 2.0 之上加了一层身份信息(ID Token),基于 JSON 和 HTTP,新开发的 Web 应用、移动 App 和前后端分离项目首选它。
- SAML 2.0:基于 XML 的老牌企业协议,大量商业 SaaS(如 Salesforce、各类企业软件)和传统企业应用支持它。
- CAS:耶鲁大学开发的协议,结构简单,国内高校和不少老系统在用。
- LDAP 和 RADIUS:严格来说不是单点登录协议,但 VPN、Wi-Fi、网络设备和很多开源运维工具只支持它们;让它们对接统一认证中心,至少能做到“同一套账号密码”。
如果您在 OIDC 和 SAML 之间犹豫,可以看《SAML 和 OIDC 怎么选》。
单点登录和统一身份认证是什么关系
单点登录只是统一身份认证平台(IAM)的一部分。一个完整的统一身份认证平台还包括用户和组织管理、多因素认证、权限管理、账号生命周期(入职开通、离职停用)和审计。实际项目里,大家说“上单点登录”,通常指的是建设整个统一身份认证平台。
企业落地单点登录的步骤
- 梳理系统清单:列出所有要接入的系统,以及每个系统支持哪种协议(OIDC、SAML、CAS、LDAP,还是都不支持)。
- 确定账号来源:员工数据在 AD 域、人事系统,还是企业微信、钉钉、飞书里?选一个作为权威来源,同步到认证中心。
- 选择认证平台:看协议是否覆盖您的系统清单、能否私有化部署、是否满足等保和信创要求、有没有原厂支持。
- 试点:先接一两个使用频率高、风险低的系统,验证登录、退出和账号属性。
- 分批迁移:按部门或按系统分批切换,旧的登录方式保留一段时间作为回退。
- 加固:在认证中心统一开启多因素认证、登录失败处理和审计。
用 Casdoor 实现单点登录
Casdoor 是开源的统一身份认证与单点登录平台,支持 OAuth 2.0、OIDC、SAML、CAS、LDAP、RADIUS,内置企业微信、钉钉、飞书和微信登录。不支持任何标准协议的老系统,可以用企业版的表单代填和网关代理认证接入。Casdoor 可以完全部署在企业内网,企业版和信创版提供国密、等保合规和原厂技术支持。