您的位置:首页 > 其它

SSO实现之SAML-1.SAML初识

2015-06-18 10:28 295 查看

SSO实现之SAML-1.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的身份信息,并断言“Yes,HeisPeterFromFrance”,于是,Peter得到礼貌的回应“欢迎光临比利时”。

2.2 声明

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

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

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

2.3
消息流:

1、
SP端发起
SP--> IDP --> SP
2、
LDP端发起
IDP --> SP

2.4 SP端发起图例



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端发起图例:



1. 用户尝试访问IDP,IDP判断该用户未登录,要求用户登录。
2. 用户提供有效凭据登录IDP。
3. 用户尝试访问一个远程的资源(SP),会先经过IDP端。
4. IDP端生成SAMLResponse,通过浏览器的自动提交,重定向到用户访问的SP资源。
5. 浏览器携带SAMLResponse请求SP资源。
6. SP解析SAMLResponse,验证用户是否合法以及验证用户的权限。
7. 返回具体的资源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: