SAML 是 SSO 提供商用来传达用户已通过身份验证的技术标准。
阅读本文后,您将能够:
复制文章链接
安全断言标记语言 (SAML) 是一种标准方法,用于告知外部应用和服务某一用户正是其声称的身份。SAML 提供一种方法来对用户进行一次身份验证,然后将该身份验证传递给多个应用,从而使单点登录 (SSO) 技术成为可能。SAML 的最新版本是 SAML 2.0。
SAML 身份验证可以比作身份证,即一种简略展示一个人是谁的标准化方式。譬如,不必进行一系列的 DNA 测试来确认一个人的身份,只需看一眼这个人的身份证便可。
计算和网络方面的一大挑战是,让不同供应商为不同目的构建的系统和设备协同工作。这称为“互操作性”:不同机器能够彼此交互,尽管它们有不同的技术规格。SAML 是一种互操作标准,提供一种广泛接受的方式,将用户身份传达给云服务提供商。
单点登录(SSO)是一种可以同时针对多个应用和服务验证用户身份的方式。使用 SSO 时,用户可以在一个登录屏幕中登录,然后就能使用多个应用。用户无需针对他们使用的每一项服务确认自己的身份。
为实现这个目标,SSO 系统必须与每个外部应用通信,告知它们用户已经登录,而这是 SAML 发挥作用的地方。
典型的 SSO 身份验证过程涉及以下三方:
主体/主题:几乎始终是尝试访问云托管应用的人类用户。
身份提供者:身份提供者 (IdP) 是一种云软件服务,通常通过登录过程来存储和确认用户身份。本质上,IdP 的职责是指出“我认识这个人,这是此人被允许做的事情”。SSO 系统实际上可以跟 IdP 分开;但若如此,SSO 基本上充当 IdP 的代表,因此从所有意图和目的来看,它们在 SAML 工作流中都是相同的。
服务提供商:这是用户希望使用的云托管应用或服务。常见示例包括云电子邮件平台(如 Gmail 和Microsoft Office 365)、云存储服务(如 Google Drive 和 AWS S3)和通信应用(如 Slack 和 Skype)。通常,用户会直接登录这些服务,但在使用 SSO 时,用户会改为登录 SSO,而 SAML 则用于为他们提供访问权限,而不是直接登录。
典型的流程可能如下所示:
当事人向服务提供商发出请求。服务提供商接着向身份提供者请求身份验证。身份提供者将 SAML 断言发送给服务提供商,然后服务提供商可以将响应发送给当事人。
如果当事人(用户)尚未登录,身份提供者可以提醒他们登录,然后再发送 SAML 断言。
SAML 断言是告知服务提供商用户已经登录的消息。SAML 断言包含服务提供商确认用户身份需要的所有信息,包括断言的来源、签发时间,以及有效断言应满足的条件。
SAML 断言可以比作职位候选人的推荐信内容:提供推荐信的人陈述他们与候选人合作的时间和时长、担任的职位,以及他们对候选人的看法。基于此推荐信,公司可以决定是否聘用候选人,就如 SaaS 应用或云服务可以基于 SAML 断言允许或拒绝用户访问一样。
SAML 2.0 是 SAML 的现代版本,自 2005 年起投入使用。SAML2.0 综合了先前使用的多个 SAML 版本。为了向后兼容,许多系统也支持更早的版本,例如 SAML 1.1,但 SAML 2.0 是现代标准。
SAML 是一种用于用户身份验证而不是用户授权的技术,这是关键区别。用户授权是身份和访问管理的另外一个领域。
身份验证指的是用户的身份:他们是谁,以及他们的身份是否已通过登录过程确认。
授权指的是用户的特权或权限:具体来说,就是他们在公司系统中允许执行的操作。
可以这样来思考身份验证和授权之间的区别:假设 Alice 要参加音乐节。在入口处,她出示门票和另外一种身份证明,以证实她有权持有该门票。之后,她被允许参加音乐节。她通过了身份验证。
然而,仅仅因为 Alice 位于音乐节场地内,并不意味着她可以随意走动、为所欲为。她可以观看音乐节表演,但不能登台表演,也不能到后台与演员互动,因为没有获得相应的授权。如果她购买了后台通行证,或者除了观众之外还担任表演者,那么她将获得更大的授权。
访问管理技术处理用户授权。访问管理平台使用若干不同的授权标准(其中一种是 OAuth),而不是 SAML。
Cloudflare Zero Trust 是一种访问管理解决方案的示例。Cloudflare 使公司可以管理用户对内部资源和数据的访问,且无需使用虚拟专用网络 (VPN)。它可以与 SSO 提供程序轻松集成,以同时提供用户授权和用户身份验证。