单点登录(Single Sign-On, SSO)介绍
单点登录(SSO) 是一种身份验证机制,允许用户在一个系统中登录后,能够访问多个相互独立的系统或应用,而无需在每个系统中都进行单独的身份验证。用户只需要在第一个系统(或应用)中登录一次,之后访问其他受信任的系统时,系统会自动识别并授权,从而避免频繁登录的麻烦。
SSO 的工作原理
SSO 的核心思想是通过一个统一的身份认证服务来验证用户的身份,从而实现对多个应用或系统的授权访问。下面是 SSO 的基本工作流程:
- 用户访问目标应用:用户尝试访问某个应用(通常是 Web 应用)时,应用会检查用户是否已经登录。
- 重定向到身份提供者(Identity Provider, IdP):如果用户尚未登录,应用将用户重定向到 SSO 的身份提供者(IdP)。IdP 是负责用户身份验证的系统,通常是一个集中的认证服务器。
- 用户身份验证:用户在 IdP 上进行身份验证,通常通过输入用户名和密码,或者通过多因素身份验证(如短信验证码、指纹识别等)。
- 生成认证令牌(Token):身份验证成功后,IdP 生成一个认证令牌(通常是一个 JWT 或 SAML 令牌),并将其返回给用户的浏览器。
- 用户访问目标应用:用户的浏览器将认证令牌传递给目标应用。目标应用验证令牌的有效性,若验证成功,则允许用户访问应用。
- 访问其他应用:对于用户要访问的其他应用,系统将检查用户是否已经登录,如果是,直接允许访问;如果不是,再次重定向到 IdP 进行身份验证。用户不需要重新输入用户名和密码,IdP 会自动识别用户身份,并返回相应的认证令牌。
SSO 的技术实现方式
常见的 SSO 实现方式有多种,其中最流行的两种方式是 基于 SAML 和 基于 OAuth2/OpenID Connect。
1. 基于 SAML(Security Assertion Markup Language)
SAML 是一种 XML 标准,用于在身份提供者(IdP)和服务提供者(SP)之间交换认证和授权数据。SAML 通常用于企业级应用和单点登录系统。
- SAML 流程:用户访问应用(SP)。SP 检查用户是否已认证,若未认证,重定向用户到 IdP。用户在 IdP 上输入凭证(如用户名和密码)。IdP 生成一个 SAML 响应(包含用户身份信息和授权数据),并将其返回给 SP。SP 验证 SAML 响应,并授予用户访问权限。
2. 基于 OAuth2 和 OpenID Connect
OAuth2 是一个授权框架,允许第三方应用获取用户资源的访问权限,但不涉及身份验证。OpenID Connect 是基于 OAuth2 的身份验证协议,解决了 OAuth2 只处理授权、不涉及身份验证的问题。
- OAuth2 和 OpenID Connect 流程:用户访问一个应用,应用检测到用户尚未登录。应用重定向用户到 OAuth2 或 OpenID Connect 提供者(身份提供者,IdP)。用户在 IdP 上输入凭证并完成认证。IdP 返回一个访问令牌(Access Token)和/或 ID 令牌(ID Token)给客户端。客户端使用令牌访问受保护的资源。在后续访问其他应用时,用户可以直接通过令牌验证身份,无需重新登录。
SSO 的优点
- 提升用户体验:用户只需登录一次,就能访问多个应用,减少了多次登录的麻烦,提高了用户体验。
- 减少密码疲劳:用户不需要记住每个应用的不同密码,避免了密码管理的复杂性,从而减少了密码疲劳。
- 简化管理:通过集中管理身份认证和授权,简化了企业应用的身份管理,管理员可以轻松管理用户的访问权限和身份信息。
- 提高安全性:SSO 可以减少密码泄露的风险,集中管理身份验证可以减少每个应用的漏洞。通过多因素认证(MFA)和其他安全措施,可以提升整体系统的安全性。
- 降低 IT 成本:集中认证和管理意味着 IT 部门不需要为每个应用分别维护独立的用户认证系统,从而降低了运维成本。
SSO 的缺点
- 单点故障:如果身份提供者(IdP)发生故障,所有依赖该 IdP 的应用将无法进行身份验证,导致整个系统不可用。
- 复杂性:实现和维护 SSO 需要较高的技术要求,尤其是当涉及多个不同平台或技术栈时,集成不同系统可能变得复杂。
- 安全风险:如果 SSO 的认证系统受到攻击,攻击者可能会获得对所有集成应用的访问权限。因此,SSO 系统需要采取严格的安全措施,如加密、MFA(多因素认证)等。
- 权限控制:SSO 系统的权限控制需要仔细设计,确保用户只拥有适当的访问权限。如果权限管理不当,可能会导致不必要的权限泄漏。
SSO 与传统认证的对比
登录次数 | 登录一次,可以访问多个应用 | 每个应用都需要单独登录 |
用户体验 | 更加便捷,用户体验好 | 用户需要多次输入用户名和密码 |
安全性 | 集中管理,提高了整体安全性(可以加入 MFA 等) | 安全性较低,每个系统的安全性独立,可能存在漏洞 |
管理复杂度 | 集中管理,简化了管理 | 每个系统独立管理,管理工作繁重 |
依赖性 | 依赖单一身份提供者(IdP),可能成为单点故障 | 各系统独立,互相不影响 |
常见的 SSO 解决方案
1.企业级 SSO 解决方案:
- Active Directory(AD) + ADFS:微软的 Active Directory 可以配合 ADFS(Active Directory Federation Services)实现企业内部的单点登录,常用于 Windows 环境中的 SSO。
- LDAP(Lightweight Directory Access Protocol):LDAP 是一个用于访问目录服务的协议,常用于实现企业内部的身份管理和 SSO。
2.第三方 SSO 服务:
- Okta:一个企业级身份和访问管理平台,提供 SSO、身份验证、多因素认证等功能。
- OneLogin:提供云端身份管理、SSO 和多因素认证等功能。
- Auth0:一个流行的身份验证和授权平台,支持 SSO、OAuth、OpenID Connect 等协议。
- Google Identity Platform:Google 提供的身份认证平台,支持基于 OAuth2 的 SSO。
3.开源 SSO 解决方案:
- Keycloak:一个开源身份和访问管理解决方案,支持 SSO、身份验证、授权管理等。
- CAS(Central Authentication Service):一个开源的 SSO 解决方案,常用于大学和教育机构的认证系统。
SSO 在企业中的应用场景
- 企业内部应用:通过 SSO,企业可以简化员工对多个内部系统(如邮件系统、ERP 系统、HR 系统等)的访问管理。
- 外部 SaaS 服务:企业可以使用 SSO 集成多个 SaaS 应用(如 Google Workspace、Salesforce、Slack 等),简化员工的登录过程。
- 跨域认证:SSO 使得跨域(如多个子域名、多个应用系统等)之间的统一认证成为可能,用户只需登录一次即可访问所有受信任的资源。

SHEIN希音公司福利 284人发布