SAML 身份验证开发人员指南 [3 Online Tools]

在当今互联的世界中,简化密码管理变得至关重要。随着各企业加速数字化转型,员工们比以往任何时候都更频繁地依赖各种协作、消息传递和数据存储工具。

这对开发人员提出了新的挑战:如何确保员工能够安全访问存储在云端的内部应用和数据? 对许多人来说,答案是采用 SAML 身份验证技术!

什么是 SAML?

安全断言标记语言(SAML)是一种开放标准,旨在简化身份验证流程。它基于可扩展标记语言(XML),标准化了需要验证的实体与 Web 服务或应用程序之间的通信方式。简而言之,SAML 技术使得用户可以使用一组登录凭据访问多个不同的应用程序。

一方面,服务提供商(SP)需要身份提供商(IdP)的身份验证来向用户授予访问权限。例如,Salesforce 作为一个服务提供商,依赖身份提供商来验证用户身份。

另一方面,身份提供商负责验证最终用户的身份,并将验证信息以及用户对服务的访问权限发送给服务提供商。Auth0 就是一个例子,它是身份解决方案领域的领导者之一。

SAML 单点登录(SSO)是什么?

SAML 的主要用途之一是实现 SSO。在 SAML 出现之前,SSO 是可以实现的,但它依赖于 Cookie,并且只能在同一域名下使用。

SAML 允许用户使用一套登录凭据访问多个应用程序,从而实现单点登录。尽管 SAML 技术早在 2002 年就已出现,并非新技术,但许多新兴应用程序和 SaaS 公司仍在使用 SAML 来实现 SSO。其最新版本 SAML 2.0 支持基于 Web 的跨域 SSO,已成为资源授权的标准。

SAML 身份验证有哪些优点?

SAML 为安全、用户和服务提供商带来了诸多益处。

简便性: 用户只需在 IdP 上登录一次,即可无缝且安全地访问所有授权应用。

增强的安全性: 许多服务提供商缺乏时间和资源来实施和维护安全的用户身份验证流程。IdP 通常更能有效地验证用户身份。通过将身份验证责任委托给 IdP,SAML 支持应用多层安全机制,例如多因素身份验证(MFA)。

改善用户体验: 使用 SAML,用户无需再记住多个用户名和密码,告别繁琐的登录过程。

减少管理开销: 服务提供商可以在不存储密码的情况下提高平台的安全性。不必处理忘记密码的问题,从而降低了服务台的成本,并让技术团队可以专注于处理其他更重要的请求。

什么是 Auth0?它与 SAML 身份验证有何关联?

Auth0 是一个提供用户身份验证和授权服务的平台。它可以同时作为 IdP 和 SP。Auth0 提供了一个可与 SAML 集成的通用登录解决方案。开发人员通常结合使用 Auth0 和 SAML,通过使用多个 IdP 来分散风险。

Auth0 几乎可以与所有主流编程语言和 API 一起使用,还可以与社交身份提供商、数据库和 LDAP 目录集成。

SAML SSO 流程

SAML 的主要作用之一是实现单点登录(SSO)。在 SAML 出现之前,SSO 是可行的,但它依赖于 cookie,并且仅在同一域内有效。

SAML 通过允许用户使用一组登录凭据访问多个应用程序来启用 SSO。SAML 并非新技术,早在 2002 年就已存在。现在许多新兴的应用程序和 SaaS 公司都在使用 SAML 来实现 SSO。其最新版本 SAML 2.0 支持基于 Web 的跨域 SSO,已成为资源授权的标准。

具体来说,当用户使用不同的应用程序时,只向用户请求一次身份验证。例如,Google 身份验证可以在 Gmail、YouTube、Google Apps 等不同服务之间共享。

在这种操作模式下,Google 是其服务的身份提供商(IdP)。这些服务则被称为“服务提供商”(SP)。

验证过程:

当用户尝试访问外部应用程序时,应用程序会将未知用户重定向到公司的 IdP。 此 IdP 是一个可通过 HTTPS 访问的 Web 服务,可以在内部或外部托管。

内部认证:

然后,用户向 IdP 证明他们的身份。此阶段可以通过显式身份验证(登录名/密码)或传播预先存在的令牌来完成。

断言的生成:

然后,IdP 会生成一个“令牌”,这相当于一个用户的身份卡,仅对请求的服务和给定的时间段有效。在这个令牌中,我们将特别发现:

  • 用户的身份:登录名、电子邮件或其他标识字段。
  • 可选的附加属性:姓氏、名字、语言等。
  • 令牌的有效期。
  • IdP 对令牌的签名。

从 IdP 到 SP 的传输:

在最常见的操作模式下,断言不是直接从 IdP 传递到 SP,而是通过用户传递的。通过 HTTP 反弹机制,IdP 会向客户端浏览器提供令牌,然后由浏览器将其传输给服务提供商。这类似于用户向任何机构出示身份证件。

SP 对令牌的使用:

服务提供商从用户接收令牌。SP 已选择信任此 IdP。它还验证令牌的签名和完整性以及有效期。如果验证通过,则 SP 会为用户打开会话。

资料来源:维基百科

SAML 身份验证与用户授权

SAML 身份验证经常与授权的概念混淆。为了明确起见,区分身份验证和授权的概念非常重要。

身份验证(Authentication): 是对用户身份的验证,本质上是确认他们是否是他们声称的那个人。例如,使用电子邮件和密码访问系统,或者在其他平台上进行登录。

授权(Authorization): 是指用户授权第三方工具访问其帐户中的资源。经过用户批准后,授权协议允许交换令牌,而无需访问用户的凭据。当您允许平台(如 Facebook)从您的 Google 帐户访问某些信息时,您通常会进行授权操作。

SAML 的必知术语

SAML 断言

SAML 断言通常由身份提供者传递给服务提供商。断言包含服务提供商用来做出访问控制决策的声明。SAML 提供三种类型的断言:

  • 身份验证语句断言服务提供商在给定的时间使用特定的身份验证方法通过身份提供商对用户进行了身份验证。
  • 属性声明断言主体与某些属性相关联。属性只是一对名称-值。依赖方使用这些属性来做出访问控制决策。
  • 授权决策声明断言允许主体通过提供证据来对资源执行操作。SAML 中对授权决策状态的表达是刻意限制的。

断言消费者服务 (ACS)

断言消费者服务(ACS)是身份提供商在用户身份验证响应之后将用户重定向到的端点。 身份提供商重定向到的端点是一个用于传输个人信息的 HTTPS 端点。

默认中继状态

默认中继状态是 SAML 消息在身份验证后重定向用户的默认 URL。默认中继状态用于协调 IdP 和 SP 之间的消息。

SAML 是一种广泛使用的协议,通常需要解码 SAML 断言。以下是一些用于编码、解码和格式化 SAML 消息和断言的最佳 SAML 工具:

#1. SAMLtool

SAMltool 由 OneDesign 开发,是一个在线 SAML 工具和工具包的集合。它包括用于编码和解码 SAML 消息、加密和解密断言以及签名和验证 SAML 消息和断言的各种工具。SAMLtool 还提供了多个不同的插件,用于将这些工具与多个 CMS 集成。

#2. Samtool.io

由 Auth0 提供,samltool.io 是一个在线工具,可以通过简单地粘贴原始 XML 或包含请求的 URL 来解码、检查和验证 SAML 消息和断言。

#3. SAM 解码器

SAM 解码器 是 PingIdentity 提供的一个简单的在线工具,用于解码 SAML。SAM 解码器可以用于解码、扩充和格式化 SAML 消息、断言和元数据。

总结

SAML 标准对于实现基于标记语言的中央身份验证机制非常有用。它的显著优势之一是它提供了高效性和高安全标准。

特别是,由于单个应用程序无需存储或同步用户数据,因此可以最大限度地减少潜在的安全漏洞。通过这种方式,实现了主要目标之一,即在高度安全性和最佳易用性之间取得平衡。

您也可以查看一些最佳的用户身份验证平台。