SAML协议
安全断言标记语言(英语:Security Assertion Markup Language,简称SAML,发音sam-el)是一个基于XML的开源标准数据格式,它在当事方之间交换s身份认证和授权数据,尤其是在身份提供者和服务提供者之间交换。
SAML 提供一种方法来对用户进行一次身份验证,然后将该身份验证传递给多个应用程序,从而使单点登录技术成为可能。SAML 的最新版本是 SAML 2.0。SAML 身份验证可以比作身份证,即一种简略展示一个人是谁的标准化方式。譬如,不必进行一系列的 DNA 测试来确认一个人的身份,只需看一眼这个人的身份证便可。
SAML单点登录流程
SAML可以实现跨域的网页浏览器单点登录(SSO)。在SAML协议中,有三个核心角色:
- 主体(principal)。主体代表的是用户
- 身份提供者(Identity Provider,简称IdP)。身份提供者负责把用户的认证信息和授权信息发送给服务提供者。例如aoneid,authing,Okta等。
- 服务提供者(Service Provider,简称SP)。服务提供商进行用户身份信息的验证,并且授权用户访问指定的资源信息,例如天翼云控制台、AWS这些都是服务提供商。
使用 SAML 协议进行单点登录时,主要涉及到以下流程:
-
- 用户试图登录 SP 提供的应用。
- SP 生成 SAML Request,通过浏览器重定向,向 IdP 发送 SAML Request。
- IdP 解析 SAML Request 并将用户重定向到认证页面。
- 用户在认证页面完成登录。
- IdP 生成 SAML Response,通过对浏览器重定向,向 SP 的 ACS 返回 SAML Response,其中包含 SAML Assertion 用于确定用户身份。
- SP 对 SAML Response 的内容进行检验。
- 用户成功登录到 SP 提供的应用。