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. 返回具体的资源。
相关文章推荐
- ZH奶酪:自然语言处理工具LTP语言云调用方法
- [转载]va_start和va_end使用详解
- iOS 复选框风格转换 Switchery 开关效果
- JAVA程序猿和HR的对话,你了解Hybris么
- Linux平台使用桥接模式运行xp
- tomcat配置文件server.xml详解
- IOS项目自动生成技术文档
- 用CSS实现LOADING省略号动画
- 画数组的直方图
- 开源点评:ZeroMQ简介
- 有关国内的流氓软件和强制安装软件(网站黑名单一览表)
- poj 1852 Ants
- 上传项目报错:Launchscreen。。。。。的解决方案
- C# 中的委托和事件
- 特征学习“Building High-level Features Using Large Scale Unsupervised Learning”
- 微信公共号 40029异常个人解决方案
- 一小时写给同组的如何使用工具检测代码质量
- 【swift_0】认识swift和创建一个swift工程
- 人、绩效和职业道德读后感:
- 用户体验