ADFS SAML登录过程

SAML(Security Assert Mark Language)常用来实现SSO。

术语讲解:

   IDP: Identity provider  在单点登陆中是指统一身份认证平台(例如ADFS)。

   SP:Service Provider  在单点登陆中是指需要被认证的服务方。

   Assert: 断言,是指IDP 认证用户后,发送认证结果给SP的一种形式。

  1. 身份提供程序发起的 SSO:用户直接请求 SSO 登录到身份提供程序IDP,登录成功后,然后重定向(HTTP POST 绑定)到服务提供程序SP上一个预先定义的着陆页面。

         2. 服务提供程序SP发起的 SSO:用户通过浏览器访问SP服务中的某个资源,这时候SP会校验是否登录,如果没有,将会重定向到IDP的身份认证页面。然后IDP方认证成功(登录成功)后,会将认证结果以断言(Assert)的形式发送给SP,然后SP通过检验断言的签名以保证断言的有效性,最后将页面重新重定向到SP访问资源的页面。

 以上两种方式的示意图(注意,除了用户登录需要参与,其他过程是IDP和SP之间通过浏览器自动跳转即自动发起的,不需要人工参与)

更详细的过程说明(SP发起):

SAML SSO通过将用户的身份从一个位置(身份提供者)转移到另一位置(服务提供者)来工作。这是通过交换数字签名的XML文档来完成的。

请考虑以下情形:用户登录到充当身份提供者的系统。用户想要登录到远程应用程序,例如支持或会计应用程序(服务提供商)。发生以下情况:

  1. 用户使用Intranet上的链接,书签或类似内容访问远程应用程序,并加载该应用程序。

  2. 该应用程序(通过应用程序子域,用户IP地址或类似名称)识别用户的来源,并将用户重定向回身份提供者(提前配置好当前SP对应的IDP),以请求身份验证。这是身份验证请求。

  3. 用户或者已经与身份提供者建立了活动的浏览器会话,或者通过登录身份提供者建立了会话。

  4. 身份提供者以包含用户的用户名或电子邮件地址的XML文档的形式构建身份验证响应,使用X.509证书对其进行签名,然后将此信息发布到服务提供者。

  5. 已经知道身份提供者并具有证书指纹的服务提供商,将检索身份验证响应并使用证书指纹对其进行验证。

  6. 建立用户身份,并为用户提供应用访问权限。

 

什么是RelayState,我为什么要关心?

有两种用于联盟的协议标准(SAML和WS-Federation)。RelayState是SAML协议的参数,用于标识用户登录并定向到依赖方的联合服务器后将访问的特定资源。

posted @ 2019-10-08 13:41  悠哉大斌  阅读(1769)  评论(0编辑  收藏  举报