2 SAML 的 2 种典型模式
在协议的角度, SAML 原理非常类似 CAS 和 Kerberos , CAS 协议依赖于 CAS Server , Kerberos 依赖于 KDC ,而 SAML 则依赖于 Identity Provider 。
根据 Service Provider( 以下简称 SP) 和 Identity Provider( 以下简称 IDP) 的交互方式, SAML 可以分为以下几种模式:一种是 SP 拉方式,一种是 IDP 推方式。
在 SAML 中,最重要的环节是 SP 如何获取对 Subject 的断言, SP 拉方式是 SP 主动到 IDP 去了解 Subject 的身份断言,而 IDP 推方式则是 IDP 主动把 Subject 的身份断言通过某种途径告诉 SP 。
2.1 SAML 的 POST/Artifact Bindings 方式(即 SP 拉方式)
该方式的主要特点是, SP 获得客户端的凭证 ( 是 IDP 对 Subject 的一种身份认可 ) 之后,主动请求 IDP 对 Subject 的凭证的断言。如下图所示: Subject 是根据凭证去访问 SP 的。凭证代表了 Subject 的身份,它类似于“来自 IDP 证明:我就是 Peter ,法国公民”。
现在,让我们看看 SP 拉方式是如何进行的:
Subject 访问 SP 的受保护资源, SP 发现 Subject 的请求中没有包含任何的授权信息,于是它重定向用户访问 IDP.
协议执行:
1,Subject 向 IDP 请求凭证 ( 方式是提交用户名 / 密码 )
2,IDP 通过验证 Subject 提供的信息,来确定是否提供凭证给 Subject
3,假如 Subject 的验证信息正确,他将获取 IDP 的凭证以及将服务请求同时提交给 SP 。
4,SP 接受到 Subject 的凭证,它是提供服务之前必须验证次凭证,于是,它产生了一个 SAML 请求,要求 IDP 对凭证断言
5,凭证是 IDP 产生的,它当然知道凭证的内容,于是它回应一个 SAML 断言给 SP
6,SP 信任 IDP 的 SAML 断言,它会根据断言结果确定是否为 Subject 提供服务。