点击这里阅读原文。


SAML 是什么?

安全断言标记语言(Security Assertion Markup Language,SAML),是一种告诉外部应用程序和服务究竟谁才是自身目标用户的标准化方法。基于 SAML,用户只需认证一次便可在多项应用程序中保持身份。由此单点登录(Single Sign-On,SSO)技术才得以实践。当下 SAML 的最新版本是 SAML 2.0。

想象一下,SAML 认证就像一张通行卡:一种便捷的能够声明谁是谁的标准化方式。换而言之,无需夸张地去做一系列的 DNA 测试,单就简单地看看通行卡,足够确认持有人的身份了。

在计算网络领域中,如何让不同厂家生产的用于不同目的的不同设备和系统能够协同工作,一直是一种巨大的挑战。这就是所谓的“互操作性”:尽管不同机器之间的技术规格不同,但它们还是可以完成交互。 SAML 便是一种可互操作的标准——一种被广泛接受的用以将用户身份传递给云服务提供商的方式。

SSO 是什么?

单点登录是一种可以同时在多个应用程序和服务中验证同一用户身份的方式。用户使用 SSO 在单个登录界面操作一次,就可以使用许多不同的应用程序了。用户无需在其使用的每项服务中反复确认身份。

为此,SSO 系统必须将用户身份告知每个外部应用程序——这正是 SAML 的作用之所在。

SAML 如何工作?

一次典型的 SSO 认证流程包含以下三方面:

  • 主体(Principal),或被称作“主题(subject)”
  • 身份提供者(Identity Provider, idP)
  • 服务提供者

主体/主题:尝试使用的云上系统的自然人用户。

身份提供者:一种存储和确认用户身份的云上软件服务,通常是基于登录流程。本质上,身份提供者的职能就是承认“我认识这个人,他们可以做这些那些事情”。虽然确实可以把 SSO 系统和身份提供者分割开,但最终 SSO 系统还是会起到相同的作用。所以在 SAML 工作流中,两者的用途和目的其实是一致的。

服务提供者:用户要使用的云托管应用程序或服务。常见例子有如 Gmail 和 Microsoft Office 365 等云上邮件平台,如 Google Drive 和 AWS S3 等云上存储服务,还有如 Slack 和 Skype 这些通讯应用。通常用户是直接登录这些服务,但有了 SSO 后,用户就改为登录 SSO,再通过 SAML 提供访问权限。

常见流程可能看起来是这个样子:主体向服务提供者提出请求。服务提供者则请求身份提供者进行认证。服务提供者收到身份提供者回送的 SAML 断言后,再将响应发送回主体。

如果主体(用户)尚未登录,身份提供者则会先要求他们登录,成功后才发送 SAML 断言。

SAML 断言又是什么?

SAML 断言即告知服务提供者登录用户身份的特定消息。囊括了服务提供者确认用户身份所需的全部信息,如断言的来源,签发时间和断言的成立条件。

用求职者的履历内容来打比方,求职者在履历中提供其过往工作的时间、职位和主观评价。公司仅基于该履历来决策是否录用求职者。就像 SaaS 应用程序或云上服务基于 SAML 断言来允许或拒绝用户访问一样。

SAML 2.0 是什么?

SAML 2.0 是自 2005 年以来 SAML 的最新版本。SAML 2.0 结合了以多过往使用的 SAML 版本。许多系统出于兼容性考虑仍然会支持如 SAML 1.1 之类的早期版本,但需要注意 SAML 2.0 才是当前标准。

SAML 认证和用户授权是一回事吗?

SAML 是一种用于用户认证而非用户授权的技术,我们需要搞清楚这一点。用户授权是身份和访问管理的单独一块。

认证针对用户身份:谁是谁,以及通过登录流程确认各自的身份。

授权针对用户特权(privileges)或许可权(permissions):在某个公司系统中各自可以做哪些操作。

我们可以这样来理解认证和授权的区别:假定爱丽丝要参加某个音乐节。在入口处,她出示了门票和额外的个人持有门票的身份证明,也因此被允许进入音乐节。她通过了身份认证。

但是,爱丽丝进入音乐节并不意味着她可以去任何地方做任何自己想做的事情。她可以观看表演,但不能上台自己表演,也不能进入后台去和表演者互动——因为她无权这样做。但如果她购买了后台通行证,亦或她其实也是表演者,她就获得了更大的授权。

访问管理技术处理用户授权。管理访问平台使用多种不同的授权标准(其中之一是 OAuth),而非 SAML。