开发人员的SAML身份验证指南 [3个在线工具]
在今天的世界中,简化密码管理是至关重要的。随着公司在数字化方面的飞跃,员工比以往更多地使用协作、消息传递和存储工具。
这对开发人员来说是一个挑战:如何为员工提供安全访问内部应用程序和存储在云中的数据?对于许多人来说,答案是SAML身份验证!
SAML是什么?
安全断言标记语言或SAML是一种简化身份验证过程的开放标准。它基于XML(可扩展标记语言),它标准化了要验证的实体与Web服务或应用程序之间的通信。换句话说,SAML使得可以使用单个登录来登录多个不同的应用程序。
一方面,服务提供商需要身份提供商(IdP)身份验证来授权用户。例如,Salesforce是一个依赖于身份提供商进行用户身份验证的服务提供商。
另一方面,身份提供商验证最终用户是他们所说的那个人,并将该数据与用户对服务的访问权限一起发送给服务提供商。Auth0是提供身份解决方案的领先者之一。
什么是SAML单点登录?
SAML的主要作用之一是实现SSO。在SAML之前,SSO是可能的,但依赖于Cookie,并且仅在同一域上可行。
SAML通过允许用户使用单个登录和一组凭据访问多个应用程序来实现单点登录(SSO)。虽然SAML并非新技术,自2002年以来一直存在,但许多新的应用程序和SaaS公司正在使用SAML实现SSO。最新版本的SAML 2.0实现了基于Web的跨域SSO,并且是资源授权的标准。
SAML身份验证的好处是什么?
SAML为安全性、用户和其他服务提供商(SPs)带来了许多好处。
简单性:用户只需登录一次IdP,然后即可无缝且更安全地访问所有应用程序。
增强安全性:许多SPs没有时间或资源在登录时实施和执行安全的用户身份验证。通常,IdPs更适合对用户身份进行身份验证。通过将身份验证返回给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 companies正在使用SAML实现SSO。其最新版本是SAML 2.0,它实现了基于Web的跨域SSO,并且是资源授权的标准。
具体而言,这意味着当用户使用不同的应用程序时,只需要向用户请求一次身份验证。例如,我们可以想象谷歌身份验证,它在不同的服务Gmail,如Youtube、谷歌应用等之间共享。
在这种操作模式下,谷歌是其服务的身份提供者(IdP)。这些服务被称为“服务提供者”(SP)。
身份验证
在连接到外部应用程序时,它将未知用户发送到企业IdP。该IdP是一个通过HTTPS访问的Web服务。它可以在内部或外部托管。
内部身份验证
然后用户向IdP证明他们的身份。这个阶段可以通过显式身份验证(登录/密码)或通过传播一个现有令牌来完成。
声明的生成
然后,IdP将生成一个“令牌”,这是一种仅对请求的服务和特定时间有效的用户身份证。在该令牌中,我们将找到以下信息:
- 用户的身份:登录名、电子邮件或其他字段
- 可选的其他属性:姓、名、语言等
- 令牌的有效期
- IdP对令牌的签名
从IdP传输到SP
在最实用的模式中,断言不是直接从IdP传递到SP,而是通过用户本身。通过HTTP跳转机制,IdP将向客户端浏览器提供令牌以传递给服务提供者。这可以类比于由政府机关提供的身份证,用于出示给任何机构。
SP对令牌的使用
服务提供者从用户那里接收到令牌。SP选择信任该IdP。它还验证令牌的签名、完整性以及有效期。如果测试结果为正,SP将向用户打开一个会话。
SAML身份验证与用户授权
通常SAML身份验证与授权被混淆。为了清楚起见,重要的是区分身份验证和授权的概念。
身份验证:验证用户的身份;基本上,验证他们是否是他们所声称的人。一个例子是使用电子邮件和密码访问系统 – 单个会话或登录到其他平台。
授权:这是用户授予第三方工具访问其帐户中资源的权限。在用户的批准下,授权协议在不访问其凭证的情况下交换令牌。通常在允许平台(如Facebook)访问您的Google帐户的某些信息时执行此操作。
SAML必备术语
SAML断言
SAML断言通常由身份提供者传递给服务提供者。断言包含服务提供者用于进行访问控制决策的声明。SAML提供了三种类型的声明:
- 身份验证声明断言服务提供商在特定时间通过身份提供商进行了身份验证,并使用了某种身份验证方法。
- 属性声明断言一个主体与特定属性相关联。属性只是一个名称-值对。依赖方使用这些属性来进行访问控制决策。
- 授权决策声明断言一个主体可以通过提供证据来对资源进行操作。SAML中的授权决策状态的表达能力是有意限制的。
断言消费服务
断言消费服务(ACS)是在用户身份验证响应后,身份提供商重定向的位置。身份提供商重定向的点是一个HTTPS端点,用于传输个人信息。
默认中继状态
这是在SAML消息经过验证后用户将被重定向的默认URL。默认中继状态用于协调身份提供商和服务提供商之间的消息。
最佳在线SAML工具
SAML是一个广泛使用的协议,经常需要解码SAML断言。以下是一些用于编码、解码和格式化SAML消息和断言的最佳SAML工具:
#1. SAMLtool
SAMltool由OneDesign提供的一组在线SAML工具和工具包。包括用于编码和解码SAML消息、encrypting和解密断言以及签名和验证SAML消息和断言的各种工具。SAMLtool还提供了几个不同的插件,将这些工具与几个CMS集成。
#2. Samtool.io
由Auth0提供的一个在线工具,你可以使用它解码、检查和验证SAML消息和断言,只需简单地粘贴原始XML或包含请求的URL。
#3. SAM解码器
SAM decoder是PingIdentity提供的一个简单的在线工具,用于解码SAML。SAM解码器可用于解码、展开和格式化SAML消息、断言和元数据。
最后的话
SAML标准非常有用,可用于基于标记语言实现集中式身份验证实例。它的一个重要优点是提供了高效率和高安全标准。
特别是,由于各个应用程序不需要存储或同步用户数据,可能的安全漏洞数量被最小化。这样,就实现了主要目标之一,即将高安全性与最佳易用性水平相结合。
您还可以查看一些best user authentication platforms。