SSO实现之SAML-1.SAML初识

 

SSO实现之SAML1.SAML初识

 

1.   SSO

       实现SSO有很多种方式:

1、  Cookie

2、  CAS

3、  OpenId

4、  OAuth

5、 SAML

6、 

2.    理论

       SAML (Security AssertionMarkup Language) 安全断言标记语言,是基于XML的一套SSO标准。

      

2.1    角色

             LDP:Identity Provide,身份提供方。负责创建,维护和管理用户认证。

             SP:Service Provide,服务提供方。控制用户是否能够使用该SP提供的资源(访问某些菜单)。

假设有一个Peter(Subject)的法国公民,他需要访问比利时(ServiceProvider),他在比利时机场被要求提供身份信息,Peter提供了欧盟(Federation)的通行证件,随即,这个通行证件在比利时机场被审核,或通过计算机送到欧盟身份认证中心(Identity Provider),该中心有一个由所有欧盟国家共同建立的公民数据库,中心审核了Peter的身份信息,并断言“YesHeisPeterFromFrance”,于是,Peter得到礼貌的回应“欢迎光临比利时”。

 

2.2    声明

             认证声明:声明用户是否已经认证,通常用于单点登录。

             属性声明:声明某个subject所具有的属性。

             授权决策声明:声明某个subject具有哪些角色(权限)。

 

2.3     消息流:

1、  SP端发起

     SP--> IDP --> SP

2、  LDP端发起

    IDP --> SP

 

2.4        SP端发起图例

SSO实现之SAML-1.SAML初识_第1张图片

 

1.用户尝试访问WebApp1

       2. WebApp1 生成一个 SAML 身份验证请求。SAML请求 (SAMLRequest) 是一个经过base64进行加密的一个加密串,实际是一个xml结构,其中主要包含了IDP给出的该SP的唯一ID(用于IDP端的信任)、SP的网址。

       3. WebApp1将重定向发送到用户的浏览器。重定向网址包含应向SSO 服务提交的编码 SAML 身份验证请求。

      4. SSO(统一认证中心或叫Identity Provider)解码 SAML 请求,并提取 WebApp1 ACS(声明客户服务)网址以及用户的目标网址。然后,统一认证中心对用户进行身份验证。统一认证中心可能会要求提供有效登录凭据或检查有效会话 Cookie 以验证用户身份。

 5.统一认证中心生成一个 SAML 响应,其中包含经过验证的用户的用户名。按照 SAML 2.0 规范,此响应将使用统一认证中心的 DSA/RSA 公钥和私钥进行数字签名。

 6.统一认证中心对 SAML 响应和进行编码,并将该信息返回到用户的浏览器。统一认证中心提供了一种机制,以便浏览器可以将该信息转发到 WebApp1 ACS

 7.WebApp1使用统一认证中心的公钥验证 SAML 响应。如果成功验证该响应,ACS 则会将用户重定向到目标网址。

 8.用户将重定向到目标网址并登录到 WebApp1

 

2.5         IDP端发起图例:

 SSO实现之SAML-1.SAML初识_第2张图片

1.      用户尝试访问IDPIDP判断该用户未登录,要求用户登录。

2.      用户提供有效凭据登录IDP

3.      用户尝试访问一个远程的资源(SP),会先经过IDP端。

4.      IDP端生成SAMLResponse,通过浏览器的自动提交,重定向到用户访问的SP资源。

5.      浏览器携带SAMLResponse请求SP资源。

6.      SP解析SAMLResponse,验证用户是否合法以及验证用户的权限。

7.      返回具体的资源。

 

你可能感兴趣的:(SAML)