学习身份验证语言
学习目标
- 了解身份验证和访问权限管理采用的行业标准。
- 知道 SAML 和 XML 的关系。
- 知道身份提供商和服务提供商的区别。
身份验证标准和协议
下面是 Salesforce 和其他身份厂商在实施身份验证解决方案时共同遵守的三项协议。
- SAML
- OAuth 2.0
- OpenID Connect
SAML 协议
下面几个例子说明 SAML 的作用。
- 当您登录到 Salesforce,然后点击应用程序启动器就可以直接进入您的 Gmail 邮箱时,就是 SAML 在起作用。
- 当已经登录到另一个应用程序的用户无需再次登录就可以访问他们的 Salesforce 组织时,也是 SAML 在起作用。
SAML 声明
这是 SAML 的工作原理。一位用户试图访问一项服务。该服务提供商向身份提供商发出一条请求,大概是询问,“您好,这个用户可以访问我的服务吗?”身份提供商检查其数据库确认用户的真实身份,然后返回一条回复消息,即声明,说,“可以,该用户经过授权,这是该用户的一些信息。”
稍等。身份提供商和服务提供商的区别是什么?基本上来说,身份提供商是验证用户身份的人。服务提供商请求经过验证的身份。稍后我们将在本单元进一步讨论身份和服务提供商。
声明就是发出的信息。一份声明可以包含关于某个用户的详细信息。它还包括用户的属性,比如姓名、联系方式,可能还有职务。
SAML 发生在后台。您的用户看不到它的任何东西。他们只需点击一个图标或链接,打开另一个应用程序,无需提供额外信息或再次登录。有时候当他们抵达时,他们的目的地已经知道他们的一些情况(那些用户属性)。
SAML 和 XML
SAML 是一种基于 XML 的协议,意思是被交换的信息包是用 XML 语言编写的。XML 应该(几乎)是人类可读的,这样您可以大概知道在发生什么。当您在试图摸清楚事情做得是否正确时,这是好事。
下图展示 SAML 声明的一部分。看起来是不是有点像乱码?再看一下,您可以看到它看起来并没有那么糟。它包含用户的用户名、电话号码以及名字等信息。
在这个例子中,Salesforce 组织把该用户的信息传输给了另一个应用程序。该应用程序可以使用那些信息授权该用户,并且将用户体验个性化。不过最重要的是,该用户不必再次登录就可以访问该应用程序。
OAuth 2.0 协议
下面是几个例子。
- 一款从 Salesforce 组织读取联系人的移动应用程序使用 OAuth。
- 一个 Salesforce 组织从另一个服务获取联系人也使用 OAuth。
下面是一个应用程序使用 OAuth 2.0 请用户允许访问信息的例子。
OpenID Connect 协议
应用程序开发人员使用 OpenID Connect 协议来启用社交登录。
比如,当 Google 代表另一个服务确认用户的身份时,它在验证该用户。因此 Google 是身份提供商。
Salesforce 出厂就支持多个主要社交媒体身份提供商,包括 Google、Facebook 和 LinkedIn。如果某一提供商不是出厂就默认支持的,如果它实施了 OpenID Connect 协议,您仍然可以使用它—就像 Amazon 和 PayPal 那样。
对于用户来说,OpenID Connect 协议的优势是它可以减少独立帐户、用户名和密码的数量。另一方面,开发人员可以验证跨网站和应用程序的用户,不必拥有和管理密码文件。这个过程使黑客破解用户帐户要难得多。
服务提供商和身份提供商
用户从一家身份提供商登录,然后被导流到 Salesforce(服务提供商)。在另一个模块中,您将设置 SSO(单点登录),以 Salesforce 作为服务提供商、一个第三方应用程序作为外部身份提供商。
Salesforce 作为身份提供商针对 SSO(单点登录)的 SAML 流
- 一位用户试图访问 Salesforce。
- Salesforce 识别 SSO(单点登录)请求并生成 SAML 请求。
- Salesforce 把 SAML 请求返回给浏览器。
- 浏览器把 SAML 请求转发给外部身份提供商。
- 身份提供商验证用户身份并把 SAML 声明打包,其中包含用户身份验证。
- 身份提供商把 SAML 声明发给浏览器。
- 浏览器把声明转发给 Salesforce。
- Salesforce 核实声明。
- 用户现在已经登录,可以访问 Salesforce。
身份验证术语小抄
一个词 | 很容易与这个词混淆 |
---|---|
身份验证是指某人是谁。如今,身份验证常常被用作授权和验证的缩写。 | 授权是指某人能够做什么。 |
协议规定一套规则,使系统可以交换信息。一般来说,协议和标准这两个词可以互换。 | 标准是指规范,厂商同意支持的一套行业惯例。标准往往包含一项协议,规定公司如何实施该标准。 |
用户名和密码是用户为了登录一个系统提供的东西。 | 凭据基本上是相同的东西。 |
单点登录 (SSO) 使一个人一次登录就可以访问其他应用程序和服务,无需再次登录。 | 社交登录使一个人可以用 Google 之类的社交帐户设置的凭据登录一个应用程序。那个应用程序接受 Google 凭据,然后用户无需创建另一个帐户和密码。 |
身份提供商是一个被信任的服务,使用户无需再次登录就可以访问其他网站和服务。 | 服务提供商是一个网站或服务,提供应用程序,接受来自另一个身份提供商的身份验证。 |