深入理解 SAML 认证
理解 Salesforce 单点登录中的 SAML
在认证领域,SAML(安全断言标记语言)在确保跨应用无缝访问方面发挥着关键作用。我们来深入了解 SAML,理解它在单点登录(SSO)中的意义,并探讨它在 Salesforce 中的实现。
设定背景
设想这样一个场景:你有两个 Salesforce org:一个身份提供商(IDP)和一个服务提供商。服务提供商拥有你想访问的数据,但你不想使用多套凭据,而是希望用一套登录信息就做到。这个概念听起来很简单,但幕后的机制可能相当复杂。

SAML 领域中的关键术语
**用户访问:**用户在认证之前试图访问服务提供商上的一个受保护资源。
**重定向:**如果用户没有通过认证,服务提供商会用一个 SAML 请求把他们重定向到身份提供商。如有需要,还可能一并发送一个中继状态(relay state,即用户最初想访问的 URL)。
**IDP 认证:**身份提供商验证用户的身份,通常通过用户名、密码或多重身份验证。
**SAML 断言:**认证之后,IDP 向服务提供商发送一个 SAML 断言。
**服务提供商信任:**服务提供商验证 SAML 断言,提取用户信息,并授予访问权限。如果之前提供了中继状态,服务提供商会导航到那个特定的 URL。

单点登录的好处
**简化访问:**用户只需要一套凭据就能访问多个服务。
**安全:**SAML 使用数字签名来确保数据完整性并防止篡改。
**互操作性:**作为一个标准协议,SAML 可以与不同技术栈上的各种 IDP 和服务提供商对接。
更深入一步:研究 SAML 流程
**SAML 请求:**由服务提供商向 IDP 发起,请求它认证一个用户。

**SAML 响应:**IDP 在认证之后发出的一条消息,封装了关于用户的详细信息。

**断言:**这些是 IDP 关于用户的声明,包含用户名或电子邮件等属性。
**数字签名:**用来验证断言,确保它们没有被非法篡改。
**中继状态:**一个深度链接 URL,确保用户在认证之后被重定向回最初想去的地方。
当用户发起访问时,一个 SAML 请求被发送给 IDP,IDP 验证之后会发回一个 SAML 断言。这个断言经服务提供商验证后,就为用户提供了想要的访问权限。

借助浏览器上的 SAML Tracer 等工具,可以把这个流程可视化。这让认证过程一目了然,从最初的请求到认证之后的最终重定向。
SAML 断言中的安全措施
为了应对潜在的安全威胁:
时间戳用来防止重放攻击,确保 SAML 断言只在很短的时间窗口内有效。
数字签名保证数据在交换过程中没有被篡改。
此外,断言可能包含用户属性,比如电子邮件地址或用户类型,让服务提供商一侧可以进行更细致的访问控制。
结论
SAML 的核心是一个基于 XML 的协议,包含认证所需的关键元素。虽然它看起来像魔法,但它是精心设计的技术的成果,旨在挫败“中间人”攻击或重放攻击之类的场景。
它能够把多个服务提供商与不同技术栈的 IDP 集成在一起,这使它成为数字认证世界的一块基石。
敬请关注
满怀信心地开启你的 Salesforce 身份之旅吧!想获得更多见解和技巧,请继续关注 www.SteveTechArc.com 和 YouTube 频道 @SteveTechArc (opens in a new tab)。订阅,加深你对 Salesforce 身份的理解。
与架构师同行以及正走在架构师之路上的人分享集成知识,一起改变世界!
STA 3.6