SAML(安全断言标记语言)通过在身份提供商(IdP)和服务提供商(SP)之间交换身份验证数据,实现对多个应用程序的安全、无缝访问。
使用 SAML,用户只需登录一次即可访问各种服务,而无需重新输入凭据,从而增强了企业环境中的安全性和用户体验。在这篇文章中,我们将探讨 SAML 的工作原理及其优势。
什么是SAML (安全断言标记语言)?
SAML(安全断言标记语言)身份验证通过在身份提供商 (IdP) 和服务提供商 (SP) 之间交换身份验证和授权数据来实现对服务的安全访问,通常用于企业环境,让用户使用一组凭据即可无缝访问多个应用程序。
SAML 组件
SAML 的关键组件和概念:
- 身份提供商 (IdP):用户进行身份验证并向服务提供商提供断言,包含有关用户身份和属性的信息。
- 服务提供商 (SP):接收 SAML 断言并根据其做出访问控制决策的实体,信任身份提供商来对用户进行身份验证。
- SAML 断言:身份提供商发送给服务提供商的 XML 文档,包含身份验证信息、属性信息和授权决策。
- 单点登录 (SSO):SAML 通常用于实现 SSO,允许用户向身份提供商进行一次身份验证,无需重新进行身份验证即可访问多个服务提供商。
- 绑定:SAML 支持消息传输的多种绑定,包括 HTTP 重定向、HTTP POST 和 SOAP。
- 基于 XML 的协议:SAML 使用 XML 对身份提供者和服务提供者之间交换的消息进行编码。
SAML 2.0
基于 SAML 的概念,接下来需要深入研究 SAML 2.0,它是该标准使用最广泛的版本。SAML 2.0 相对于其前身 SAML 1.1 引入了多项增强功能和功能:
- 增强型单点登录 (SSO):SAML 2.0 改进了 SSO 功能,使其更易于实施,在安全性和用户体验方面更加稳健。
- 身份联合:允许不同域之间更加无缝的身份联合,使用户可以通过单一身份验证过程访问不同组织的资源。
- 支持多个身份验证上下文:SAML 2.0 可以处理不同级别的身份验证保证,从而可以在需要时使用更强大的身份验证方法。
- 元数据交换:支持身份提供者和服务提供者之间的元数据交换,有助于自动化配置和建立信任关系。
- 改进的协议绑定:SAML 2.0 更好地支持各种传输协议,例如 HTTP 重定向、HTTP POST 和 Artifact Binding,从而增强了灵活性和兼容性。
- 属性查询和同意:SAML 2.0 允许更有效地查询用户属性和管理用户同意,从而提高用户对个人数据的控制。
SAML 身份验证如何进行
认证流程
当用户通过在 IdP 处输入凭据来启动登录过程时,SAML 身份验证就开始了。 IdP 验证用户的身份并创建 SAML 断言,其中包含用户属性和身份验证信息。
该断言包括用户身份、身份验证时间以及断言有效的条件等详细信息。为了确保信息的完整性和真实性,断言由 IdP 进行数字签名。
服务接入
一旦通过身份验证,用户就会尝试访问 SP 提供的服务。 SP 需要验证用户身份,通过身份验证请求将用户重定向到 IdP。 IdP 通过将 SAML 断言发送到 SP 进行响应,通常通过用户浏览器使用 HTTP POST 或 HTTP Redirect。
SP 通过检查数字签名和断言条件来验证 SAML 断言。如果断言有效,SP 就会授予用户对所请求服务的访问权限。此过程对于用户来说是无缝的,用户只需登录一次即可访问多项服务。
示例场景
考虑一个典型的企业场景。在工作日开始时,小张使用他的公司凭据登录公司的身份和访问管理 (IAM) 系统,该系统充当 IdP。
IdP 验证小张的凭据并创建 SAML 断言,其中包括小张的用户名、身份验证时间戳和基于角色的访问属性等信息。然后,小张尝试访问该公司的托管 Email (SP)。
Email 将小张重定向到带有身份验证请求的 IdP。 IdP 通过小张的浏览器将 SAML 断言发送回 Email 。Email 通过检查数字签名并确保满足所有条件(例如断言适用于 Email 且未过期)来验证断言。
一旦通过验证,小张就可以访问 Email ,而无需重新输入其凭据,从而使他能够无缝地使用该服务。
SAML 身份验证的好处
通过集成 SAML 身份验证,组织可以简化用户访问管理,通过降低密码疲劳和重复使用的风险来增强安全性,并为用户提供对多个应用程序的无缝访问,提高运营效率和安全状况。
什么是 SAML 断言?
SAML 断言是由 SAML 身份提供商 (IdP) 发出并由服务提供商 (SP) 使用的 XML 文档,包含双方都可以信任的有关用户的声明。
SAML 断言的主要目的是以安全且标准化的方式在 IdP 和 SP 之间传递安全信息。以下是 SAML 断言中的关键组件和语句类型:
关键组件
- Issuer:发出断言的实体,通常是 IdP。
- Subject:断言所涉及的用户或实体。这通常包括用户的唯一标识符。
- Conditions:断言有效的约束和规则,包括时间限制和受众限制。
- Authentication Statement:有关用户在 IdP 处进行身份验证的信息,例如身份验证方法和时间戳。
- Attribute Statement:有关用户的属性的集合,例如姓名、电子邮件地址、角色等。
- Authorization Decision Statement:有关用户对特定资源的访问权限的信息。
报表类型
- 身份验证声明:描述 IdP 的身份验证行为,包括所使用的方法和身份验证时间。
- 属性声明:包含与主题相关的属性。例如,用户的电子邮件地址、角色或其他相关信息。
- 授权决策声明:提供有关用户是否有权访问特定资源的信息,包括决定(允许或拒绝)和相关资源。
SAML 断言如何进行?
- 用户请求访问:用户尝试访问 SP 上的资源。
- SP 请求身份验证:SP 将用户重定向到 IdP 进行身份验证。
- 用户身份验证:用户向 IdP 提供凭据。
- IdP 发出断言:身份验证成功后,IdP 会生成 SAML 断言并将其发送回 SP(通常通过用户的浏览器)。
- SP 验证断言:SP 验证断言,检查其完整性、颁发者的有效性以及条件。
- 授予访问权限:如果断言有效,则授予用户访问资源的权限。
安全考虑
- 加密:可以对 SAML 断言进行加密以确保机密性。
- 签名:断言通常经过签名以保证其完整性和真实性。
- 过期:断言包括时间限制等条件,以减轻重放攻击的风险。
总结
SAML 作为一种强大的身份验证和授权标准,在现代企业 IT 环境中扮演着越来越重要的角色。通过实现单点登录(SSO)和安全的身份信息交换,SAML 显著提升了用户体验和系统安全性。
通过本文,我们了解 SAML 的核心概念、组件和工作原理,了解到 SAML 如何通过身份提供商(IdP)和服务提供商(SP)之间的交互,知道 SAML 2.0 版本的诸多改进,如增强的 SSO 功能、身份联合和多重认证上下文支持,进一步扩展了其应用范围和效能。
然而,实施 SAML 也面临着一些挑战,如确保断言的安全性、管理复杂的信任关系等。因此,在部署 SAML 解决方案时,需要仔细考虑加密、签名和有效期等安全机制,以及与现有系统的集成问题。Apifox 现已支持 SSO 单点登录,为企业提供了一种强大而灵活的身份管理解决方案。