单点登录的实现原理与方案有哪些?
2 个回答
热爱漫无边际,生活自有分寸。王平安## 作用 单点登录(SSO)用于让用户只完成一次身份认证,就可以访问多个相互信任的关联系统,避免在不同系统中重复输入账号密码。 典型场景是:员工登录企业身份中心后,可以直接访问云控制台、对象存储、内部办公系统等已接入的应用。 ## 实现原理 SSO 的核心是“集中认证 + 令牌传递”: 1. **集中认证中心(IdP)** - 用户首次访问系统时,被重定向到统一身份提供商(IdP)。 - IdP 负责身份验证,例如用户名密码、多因素认证等。 - 认证成功后,IdP 生成并颁发加密的会话令牌(Token)。 2. **应用系统与 IdP 建立信任关系** - 各业务系统作为服务提供方(SP),预先与 IdP 建立信任。 - 业务系统本身不再重复执行用户登录认证,而是信任 IdP 的认证结果。 3. **携带令牌访问其他系统** - 用户访问其他受保护应用时,携带 IdP 颁发的令牌。 - 目标系统验证令牌的签名、有效期和权限范围。 - 验证通过后,系统直接建立本地会话并授权访问,用户无需再次登录。 ## 常见方案 - **SAML** - 常用于企业级 Web 应用和身份联邦。 - 通过 SAML 断言在 IdP 与 SP 之间传递用户身份信息。 - **OAuth 2.0** - 主要用于授权,允许第三方应用在用户授权范围内访问资源。 - 实际单点登录场景中通常会结合 OpenID Connect 使用。 - **OpenID Connect(OIDC)** - 在 OAuth 2.0 之上增加身份认证能力。 - 通过 ID Token 表达用户身份,适合现代 Web、移动端和云服务场景。 - **企业目录联合身份** - 可与企业内部的 AD、LDAP 等目录服务集成。 - 用户使用企业统一身份访问云服务或内部系统。 - **统一身份中心 / 访问管理服务** - 由统一身份平台集中管理用户、组织、认证策略和应用接入。 - 各业务系统通过 SAML、OAuth/OIDC 等协议接入,实现统一登录和权限控制。发布于 2026-10-28 08:47 •IP属地 黑龙江举报评论收藏
自己喜欢的东西又何必问别人好不好小医仙## 作用 - 单点登录(SSO)通过“集中认证 + 分布式验证”,让用户只在认证中心(IdP)登录一次,就可以访问多个相互信任的业务系统(SP),无需重复输入账号密码。 - 认证中心负责统一身份验证、令牌签发和生命周期管理;业务系统负责校验令牌、建立本地会话并授权访问。 - 可统一接入用户名/密码、MFA 等认证方式,并支持 OAuth 2.0、OpenID Connect(OIDC)、SAML 2.0 等标准协议。 ## 原理 1. 用户访问业务系统时,系统检查是否存在有效本地会话或令牌。 2. 如果没有有效令牌,则将用户重定向到认证中心。 3. 用户在认证中心完成身份验证,例如密码、短信验证码或 MFA。 4. 认证中心生成加密令牌并重定向回业务系统。 5. 业务系统通过预共享密钥或公钥验证令牌签名,确认用户身份和权限后创建本地会话。 6. 用户再访问其他关联系统时,该系统重定向到认证中心;认证中心发现全局会话仍有效,就直接签发令牌,不再要求用户登录。 7. 用户登出时,认证中心销毁全局会话,并联动销毁各关联系统会话。 ## 常见实现机制与方案 ### 1. 令牌机制 - **会话票据 TGT/ST**:认证中心发放长期票据 TGT,再用它生成访问具体服务的短期票据 ST,类似 CAS 的票据模式。 - **JWT 令牌**:令牌中携带用户身份、权限范围和有效期,并通过 RSA、国密算法等数字签名防止篡改。 - **无状态验证**:业务系统在本地使用公钥或共享密钥验证 JWT,不必每次请求都实时调用认证中心,有利于提升性能。 - 令牌通常可保存在 Cookie 或 LocalStorage 中,并在请求中携带;跨域场景需要处理 Cookie 作用域、重定向传票或授权头传递等问题。 ### 2. 标准协议方案 - **OAuth 2.0**:主要用于授权,允许第三方应用在获得授权后访问受保护资源;若只用于“登录”,需要配合身份层,避免把访问令牌直接当作身份认证凭证。 - **OpenID Connect(OIDC)**:构建在 OAuth 2.0 之上,提供标准身份认证能力,通常通过 ID Token 返回用户身份信息,适合现代 Web、移动端和 SaaS 应用。 - **SAML 2.0**:基于 XML 断言交换身份和属性信息,常用于企业级应用、跨组织联合登录和传统 SaaS 系统。 - **CAS 类票据方案**:通过 TGT、ST 等票据完成集中认证和服务授权,适合以认证中心为核心的企业内部系统。 ### 3. 新旧系统接入方案 - **反向代理接入**:由 Nginx/Apache 等代理拦截请求,自动注入令牌 HTTP 头,使老旧系统尽量少改造或无改造接入。 - **中间件或插件接入**: - Java 系统可通过 Servlet Filter 拦截请求并调用认证中心 API 校验令牌。 - .NET 系统可通过 Owin Middleware 集成 OIDC。 - **标准协议配置接入**:支持 OIDC/SAML 的第三方 SaaS 可直接配置认证中心地址、证书、回调地址等参数。 - **定制适配**:对无法直接支持标准协议的系统,可与供应商联合开发认证模块,也可结合 SCIM 2.0 同步用户数据。 ## 安全要点 - 使用 HTTPS 和 HSTS,防止令牌在传输过程中被窃取或篡改。 - 令牌应设置较短有效期,必要时通过刷新令牌续期;异常 IP、异地登录或设备指纹异常时强制 MFA。 - 对 JWT 做严格签名校验,并校验签发者、受众、过期时间等字段。 - 敏感用户属性可使用 AES-GCM、SM4 等方式加密存储。 - 认证中心应集群部署并配合分布式缓存,避免成为单点故障。 - 记录令牌签发、验证、刷新和销毁日志,以支持安全审计。发布于 2026-10-28 06:13 •IP属地 河南举报评论收藏
公众号进入网站体验更佳

