安全断言标记语言(SAML)是一种基于XML的开放标准,用于在身份提供商(IdP)和服务提供商(SP)之间安全交换认证与授权信息。在研究SAML身份验证过程之前,先了解以下几个术语:
- 身份提供商(IdP):负责验证用户身份,生成包含用户信息的SAML断言(XML文档),并传递给服务提供商(SP)。
- 服务提供商(SP):依赖身份提供商(IdP)的认证结果,提供具体服务,如Salesforce、AWS。
- SAML断言:分为身份断言(用户身份验证信息)、属性断言(用户属性如角色)、授权决策断言(访问权限)三类。断言是身份提供商(IdP)向服务提供商(SP)传递用户身份和属性的媒介。
- SAML协议:定义身份提供商(IdP)与服务提供商(SP)之间如何交换SAML断言的规则。常见的协议包括身份验证请求协议(ARP)和单点注销协议(SLP)。
- 绑定:绑定规定传输方式,常见的绑定包括HTTP重定向、HTTP POST和SOAP。
什么是SAML断言
SAML断言是通知 SP 用户已登录的一组消息,它包含 SP 确认用户是他们声称的身份所需的所有信息。这包括有关断言来源、发布时间以及使断言有效的条件的信息。IdP 会生成有关特定用户何时通过身份验证以及通过何种方式进行身份验证的信息。该断言还包含与特定用户关联的属性列表(称为声明)和授权决策,即是授予还是拒绝用户访问特定源。
在SAML中,断言(Assertion)是用来在安全环境中传递认证和授权信息的XML格式文档。SAML断言通常由身份提供商(IdP)发出,并被服务提供商(SP)用来验证用户的身份和授权。
SAML断言的主要组成部分
- Issuer:指出是谁创建了这个断言,通常是身份提供商的标识。
- Subject:包含关于主体的信息,例如名字、电子邮件等。
- Conditions:包含关于断言有效期的信息,例如开始和结束时间。
- AuthenticationStatement:提供了关于主体认证的信息,例如认证方法、时间等。
- AttributeStatement:包含了关于主体的属性信息,例如角色、组信息等。
SAML断言的流程
- 用户登录:用户在服务提供商的界面上输入凭证(如用户名和密码)。
- 身份验证请求:服务提供商发送一个SAML认证请求到身份提供商。
- 身份提供商认证:身份提供商验证用户的凭证。
- 生成SAML断言:如果验证成功,身份提供商生成一个SAML断言,其中包含用户的身份信息和授权信息。
- 发送断言到服务提供商:身份提供商将SAML断言发送回服务提供商。
- 服务提供商验证断言:服务提供商验证SAML断言的有效性,包括签名验证和时效性检查。
- 访问授权:如果断言有效,服务提供商允许用户访问特定的资源或服务。
什么是基于 SAML 的 SSO 身份验证和授权
SAML提供程序是支持在 SAML 请求期间对用户进行身份验证和授权的任何服务器。SAML提供程序的两种类型是服务提供商(SP),即用户将访问的企业应用程序,以及身份提供商(IdP),即执行用户身份验证的系统。
SAML 提供了一种安全的方式来验证 SP 和 IdP 之间的用户身份,同时允许它们作为单独的实体存在。SAML事务(即 SP 与 IdP 之间的标准化通信)通过可扩展标记语言(XML)进行。
- SAML 身份验证:通过输入的凭证验证用户身份的过程。
- SAML 授权:告知 SP 要向经过身份验证的用户授予什么级别的访问权限。
基于 SAML 的 SSO 如何工作
使用 SAML 时,有两种方法可以启动单点登录(SSO)。
服务提供商(SP)发起的 SSO
- 当用户通过 SSO 登录到支持 SAML 的应用程序时,SP 会请求 IdP 进行身份验证。
- IdP 对用户的凭据进行身份验证,并将断言返回给 SP。
- SP 根据 SAML 标准验证 IdP 生成的 XML 文档(即 SAML 断言)。该断言由 IdP 使用 X.509 证书签名。
- SP 通过证书指纹的副本验证断言的真实性。
- 用户验证完成后,用户无需再次输入密码即可访问 SP 及所有关联应用程序。
- 此流程通常由 SP 中的登录按钮启动。
身份提供商(IdP)发起的 SSO
- 用户登录 IdP 后,可从所有可用 SP 列表中选择一个 SP,随后通过包含断言的 SAML 消息直接跳转至该 SP。
SAML 有哪些优势
SAML 的一大优势在于无需必记住多组凭证即可登录多个账户,只需一组凭证即可访问多个账户。SAML还可以提供的更多功能,其优点还包括:
提高安全性
- SAML将身份验证过程集中在一个安全的身份提供商(IdP)中。这种集中化意味着IdP只传输一次凭证,从而降低了泄露的风险。
- IdP作为唯一的认证点,使得安全措施可以在单一位置统一实施。通过这种方式,服务提供商(SP)无需存储或管理凭证。即使某个SP被攻破,凭证在IdP中仍然安全。
- SAML断言通常经过签名和加密,从而确保认证信息在传输过程中的机密性和完整性。
降低管理成本
- SAML简化了跨多个平台的用户认证和访问管理。
- SAML支持单点登录(SSO),减少因忘记密码带来的麻烦,同时减轻IT服务台的负担。
- 无需跨系统同步用户目录,简化用户生命周期管理。
标准化与定制化
- SAML像一种通用语言,让不同系统在交换用户身份信息时能够互相理解。这种标准化意味着,只要系统支持SAML,无论使用何种类型的系统或应用,都能与其他系统通信。
- SAML还支持定制化,例如,可以根据具体需求添加或修改认证流程。
合规性和审计
- SAML通过加密和数字签名增强安全性,在认证过程中保护敏感用户数据,从而满足GDPR和HIPAA等数据保护法规的合规需求。
- SAML通过身份提供商集中管理认证,简化了用户活动的跟踪和日志记录,支持生成审计追踪记录。
- 支持基于角色的访问控制(RBAC)和最小权限原则。
兼容性
SAML提供了一个基于XML的标准化框架,用于在不同系统间交换信息。通过这种方式,SAML无需依赖特定平台即可运行,从而兼容各类系统。这使得企业能够在混合环境(如云服务和本地应用)中实施SSO,并统一管理身份。
ADSelfService Plus SSO解决方案,使用安全且广泛采用的行业标准SAML 2.0来提供SSO。它通过 SSO 简化并增强了用户的登录体验,并使用 MFA 提供更高的安全性。