协议概述
安全断言标记语言(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)时,都可以直接登录,而不用再输入身份和口令。
运行流程
- 用户请求访问 Web 应用系统。
- Web 应用系统生成一个 SAML 身份验证请求。
- Web 应用系统将重定向网址发送到用户的浏览器。重定向网址包含应向 SSO 服务提交的编码 SAML 身份验证请求。
- IDP 对 SAML 请求进行解码。
- IDP 对用户进行身份验证。认证成功后,IDP 生成一个 SAML 响应,其中包含经过验证的用户的用户名。然后将 SAML 响应编码并返回到用户的浏览器。
- 浏览器将 SAML 响应转发到 Web 应用系统 ACS URL。
- Web 应用系统使用 IDP 的公钥验证 SAML 响应。如果成功验证该响应,ACS 则会将用户重定向到目标网址。
- 用户将重定向到目标网址并登录到 Web 应用系统。
信息
在 SAML 协议中,IDP 和 SP 不需要直接进行通讯,只要用户浏览器可以访问到 IDP 和 SP 即可。也就是说 SAML 协议在混合云环境下也可以正常进行使用,只要用户浏览器可以访问到公有云的 IDP 和内网的应用就可以使用 SAML 协议集成应用的单点登录。