跳到主要内容

SAML 协议

· 阅读需 4 分钟

协议概述

安全断言标记语言(Security Assertion Markup Language,SAML)是一个基于 XML 的开源标准数据格式,它在当事方之间交换身份验证和授权数据,尤其是在身份提供者和服务提供者之间交换。SAML 是 OASIS 组织安全服务技术委员会(Security Services Technical Committee)的产品。

SAML 解决的最重要的需求是 Web 端应用的单点登录(SSO)。

名词说明

  • 委托人:SAML 规范定义的三个角色之一,通常为一名用户。
  • IdP:Identity Provider,身份提供者,SAML 规范定义的三个角色之一,通常指身份鉴别服务器。
  • SP:Service Providers,服务提供者,SAML 规范定义的三个角色之一。
  • Assert:断言,是指 IdP 认证用户后,发送认证结果给 SP 的一种形式,以表示委托人的基本信息、权限信息等。

应用场景

SAML 解决的最重要的需求是网页浏览器单点登录。在 SAML 协议中,一旦用户身份被 IdP 认证过后,该用户再去访问其他在主站注册过的应用(SP)时,都可以直接登录,而不用再输入身份和口令。

运行流程

  1. 用户请求访问 Web 应用系统。
  2. Web 应用系统生成一个 SAML 身份验证请求。
  3. Web 应用系统将重定向网址发送到用户的浏览器。重定向网址包含应向 SSO 服务提交的编码 SAML 身份验证请求。
  4. IDP 对 SAML 请求进行解码。
  5. IDP 对用户进行身份验证。认证成功后,IDP 生成一个 SAML 响应,其中包含经过验证的用户的用户名。然后将 SAML 响应编码并返回到用户的浏览器。
  6. 浏览器将 SAML 响应转发到 Web 应用系统 ACS URL。
  7. Web 应用系统使用 IDP 的公钥验证 SAML 响应。如果成功验证该响应,ACS 则会将用户重定向到目标网址。
  8. 用户将重定向到目标网址并登录到 Web 应用系统。
信息

在 SAML 协议中,IDP 和 SP 不需要直接进行通讯,只要用户浏览器可以访问到 IDP 和 SP 即可。也就是说 SAML 协议在混合云环境下也可以正常进行使用,只要用户浏览器可以访问到公有云的 IDP 和内网的应用就可以使用 SAML 协议集成应用的单点登录。