单点登录 SSO

1. 什么是SSO

  SSO是single sign on,即单点登录,是目前流行的企业业务整合方案之一。它提供一种用户只需要登录一次就可以访问互相信任的应用系统

2. 为什么使用SSO

  提高用户效率,不必多次登录系统,也不必记住多个用户名密码。

  提高开发者效率,接入sso的应用不需要自己写登录模块,

3. SSO登录表象

   sso登录体系三种角色:User(多个),Web(多个), SSO认证中心(1个)。

   web应用不处理User登录,所有的登录都是在SSO认证中心中进行

   sso认证中心通过某些方法来告诉Web应用当前访问的用户是否可以继续访问应用

   sso认证中心和所有的web应用建立一种信任关系。sso认证中心对用用户身份正确性的判断通过某种防范告诉web应用,并且判定结果被web应用信任。

   客户第一次通过浏览器登录appA,请求会重定向到登录页面,认证通过后进入到appA系统。之后用户再登录appB,就直接进入appB的页面。

 

4. 基于CAS实现SSO登录原理

      

    

CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护 Web 应用的受保护资源,过滤从客户端过来的每一个 Web 请求,同时, CAS Client 会分析 HTTP 请求中是否包含请求 Service Ticket( ST 上图中的 Ticket) ,如果没有,则说明该用户是没有经过认证的;于是 CAS Client 会重定向用户请求到 CAS Server ( Step 2 ),并传递 Service (要访问的目的资源地址)。 Step 3 是用户认证过程,如果用户提供了正确的 Credentials , CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket ,并缓存以待将来验证,并且重定向用户到 Service 所在地址(附带刚才产生的 Service Ticket ) , 并为客户端浏览器设置一个 Ticket Granted Cookie ( TGC ) ; CAS Client 在拿到 Service 和新产生的 Ticket 过后,在 Step 5 和 Step6 中与 CAS Server 进行身份核实,以确保 Service Ticket 的合法性。

在该协议中,所有与 CAS Server 的交互均采用 SSL 协议,以确保 ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向 的过程。但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的(使用 HttpsURLConnection )。

 

CAS 系统中名词术语解释 TGC 、 ST 、 PGT 、 PGTIOU 、 PT 。

Ticket-granting cookie(TGC) :存放用户身份认证凭证的 cookie ,在浏览器和 CAS Server 间通讯时使用,并且只能基于安全通道传输( Https ),是 CAS Server 用来明确用户身份的凭证;

Service ticket(ST) :服务票据,服务的惟一标识码 , 由 CAS Server 发出( Http 传送),通过客户端浏览器到达业务服务器端;一个特定的服务只能有一个惟一的 ST ;

Proxy-Granting ticket ( PGT ):由 CAS Server 颁发给拥有 ST 凭证的服务, PGT 绑定一个用户的特定服务,使其拥有向 CAS Server 申请,获得 PT 的能力;

Proxy-Granting Ticket I Owe You ( PGTIOU ) : 作用是将通过凭证校验时的应答信息由 CAS Server 返回给 CAS Client ,同时,与该 PGTIOU 对应的 PGT 将通过回调链接传给 Web 应用。 Web 应用负责维护 PGTIOU 与 PGT 之间映射关系的内容表;

Proxy Ticket (PT) :是应用程序代理用户身份对目标程序进行访问的凭证;

其它说明如下:

Ticket Granting ticket(TGT) :票据授权票据,由 KDC 的 AS 发放。即获取这样一张票据后,以后申请各种其他服务票据 (ST) 便不必再向 KDC 提交身份认证信息 (Credentials) ;

Authentication service(AS) --------- 认证用服务,索取 Credentials ,发放 TGT ;

Ticket-granting service (TGS) --------- 票据授权服务,索取 TGT ,发放 ST ;

KDC( Key Distribution Center ) ---------- 密钥发放中心;

    

 

 

 

 

博客参考 http://blog.chinaunix.net/uid-22816738-id-3525939.html

https://www.itlipeng.cn/?p=767

http://www.coin163.com/java/cas/cas.html

posted @ 2017-02-14 15:10  zjxbeta  阅读(95)  评论(0编辑  收藏  举报