使用各种业务应用程序的企业很难在整个基础设施环境中根据用户角色维护数据的保密性和访问权限。SAML(安全断言标记语言)在这方面提供了很大的帮助。
让我们看看它是什么,它是如何工作的,它的优点是什么,它与 SSO 有何不同,什么使它与 SSO 相似,以及它如何帮助 API 访问验证以确保惊人的安全级别。
SAML — 快速概览
SAML 的主要作用是允许 IdP(身份详细信息提供者)与相关机构共享与身份验证相关的凭证。它是一种开放标准,允许为各种应用程序授予统一访问权限,同时不损害数据安全。
关于 SAML 您还必须了解以下几点:
- 它利用 XML 来完成 IdP 和服务提供者之间的传统连接,以实现可靠的通信。
- SAML 身份验证过程确认最终用户的身份,而 SAML 授权定义哪些资源应在用户的访问范围内。
- 它会检查 SP、IdP 和最终用户,看看用户是否有资格获得其要求的内容。
- 它是 OASIS 标准。
- 它确保信息的安全交换。
- 它支持 SSO 激活。但是,此过程需要连接到外部 IdP 并与其共享 XML 令牌。
快速了解单点登录 (SSO)
SSO 被认为是最有效的身份验证框架之一,它整合了多个登录屏幕。这意味着,您无需为您的应用程序单独登录。相反,您的帐户的一组登录数据将适用于不同的 SaaS 应用程序。
这样一来,访问应用程序的速度更快、更简单、更易于审计。对于寻求无摩擦应用程序访问验证和更佳安全实施的企业而言,这是 IAM 策略的一个关键方面。
启用 SSO 后,可以享受:
- 强密码,因为没有必要创建多个相似的密码。一个强而复杂的密码对每个人来说就足够了。
- 用户不必记住各种密码。
- 轻松部署 MFA 以验证多种因素,因为它在 1 点激活将保护各种应用程序。
- 快速密码重新输入策略实施,因为管理员有一个应该实施策略的单点。
- 无缝内部凭证管理,因为 SSO 在内部存储用户密码并授予 IT 团队对数据库的更多控制权。
- 立即恢复用户密码,因为 IT 团队必须致力于恢复一个密码。
SAML 身份验证 — 逐步流程
让我们通过几个步骤告诉您整个过程。
- 首先,身份服务将用户登录相关的输入移交给 SP。为了将 SAML 参数无缝传递给 SP,每个最终用户都必须通过 SSO 登录一次。
- 接下来,SP 联系 IdP,询问请求的可信度。此过程也需要同意 SAML SSO 配置。这样做可确保使用相同的 SAML 设置来检查身份并授权用户/请求。
好处
- 作为一种标准格式,它为企业提供了一种不受平台兼容性和供应商实施限制的开放方法。
- 它以松散耦合的方式使用目录,这意味着不需要将用户数据存储或同步到本地目录。
- 由于它支持 SSO,最终用户在访问应用程序时将获得丰富的体验。
- SAML 允许企业重复使用注册/登录集成,同时保持相同的安全级别。它降低了帐户管理成本。
- 当 SAML 发挥作用时,维护用户身份的负担就转移到 IdP 身上。这使服务提供商免于注册和登录相关的麻烦。
什么是 SAML 断言?
简单来说,它是一个包含用户授权状态信息的 XML 格式的文档。此详细信息由 IdP 提供给服务提供者。
它的 3 种类型断言是:
身份验证是关于用户的可信度、相关技术和会话持续时间跟踪细节的验证。
Assigned负责将 SAML 令牌成功传递给 SP。IdP 和 SP 目录使用相同的属性来确认请求创建者的可信度。
授权决策类型的断言解释了根据用户的请求,是否授予其访问权限。如果发生拒绝访问,还会提供拒绝访问的详细原因。
SAML 示例
下面给出了 SAML 如何处理其操作的最简单示例:
假设有一位最终用户,名叫约翰,他试图出于官方目的访问业务应用程序。
- John 将开始与 SSO 的会话并完成程序的身份验证部分。
- Zoho CRM 将请求 IdP 共享用户详细信息以供确认。
- SaaS工具将访问获取的结果以完成权限验证步骤。
- IdP 将以 SAML 格式回复此请求。它将包含 John 的数字签名。根据 John 和 IdP 提供的身份详细信息之间的相似性,回复消息可能还会包含其他详细信息。
- SaaS 工具接收响应并根据 IdP 的指示授予或拒绝访问。
- 如果允许访问,John 就可以使用他的 Zoho 帐户。
SAML 与 SSO
SAML 有助于用户身份验证并实现 SSO。SSO 可以单独存在,并允许最终用户使用具有统一登录详细信息的各种应用程序。SSO 可以在执行信息交易时启用标准 SAML 协议,因为它没有自己的特定协议。此外,它可以使用 OpenID 等第三方协议进行有效的跨域用户身份检查。SAML 提供广泛的协议。
SAML 与 oAuth2
由于主要目的相似,SAML 2.0 和 oAuth 2.0 通常被认为是相同的。虽然它们有很大的相似之处,但它们在很多方面都有所不同。
相似之处
- 两者都需要促进安全应用程序的互操作性。
- 两者都支持轻松访问管理和快速集成。
差异
- oAuth 2.0 注重授权,而 SAML 优先考虑身份验证
- SAML 基于 XML,而 oAuth 2.0 使用JSON
- SAML 通过 cookie 维护会话数据,而在 oAuth 的情况下则使用 API 调用。
使用 SAML 进行 API 身份验证
虽然 SAML 最常见的用途是支持用户身份验证和启用 SSO,但它在 API 中请求的真实性检查方面也非常有效。用户访问权限验证(用于检查请求是否真实)对于API 安全至关重要,可以通过发送 SAML 请求来实现,该请求必须包含以下内容:
- 基于 SAML 准备身份验证 API 的 API 身份验证请求
- 可以支持 IdP 自动发起的 SSO 流程的 SAML 消息
无论如何,SAML 请求消息必须基于具有 <Response> 根元素的编码 XML 文档。
请求体必须包含 content、ids、realm,前两个是必须的,最后一个是可选的。
SAML 响应包括 access_token(授予或拒绝访问的 SAML 令牌)、username、expires_in、refresh_token 和 realm。
最后的话
SAML 和单点登录关系密切。它们对于零妥协的数据安全至关重要。希望本文能帮助您有效地了解这两者。