cas分析

Central Authentication Service
以cas-server-2.0.10版为例。
Class
edu.yale.its.tp.cas.servlet.Login
这是一个处理登录的类,
生成实例时初始化用于登录验证的处理类。
用登录验证:
1、 验证COOKIE(在认证服务器域中),COOKIE中存放ticketID.通过ticketID,可以从缓存中获取具体的ticket实例(存放了用户标识)。
2、 如果通过COOKIE中存放的ticketID从缓存中获取到ticket实例,而且当前不是想重新进行登录认证。就调用grantForService方法。
3、 grantForService会重新生成一个当前这次请求服务的TOKEN(注意ticketID和TOKEN的区别)
4、 确认跳转到其它应用的COOKIE值为enabled/ disabled。那么就转向确认跳转页面或都直接跳转到目的服务地址。目的服务地址通过service参数传递。
==============================================
如果没有记录tookieid的COOKIE,则通过页面传递的用户名和密码进行登录认证(也可以是其它的认证方式)。
登录成功则在认证服务器域上在客户端设置COOKIE(setMaxAge(-1)表示是内存COOKIE不进行保存,浏览器关闭失效)。
edu.yale.its.tp.cas.servlet.ServiceValidate
目标应用程序请求验证当前传递的TOKEN是否合法。
初始化时获取ServiceTicketCache和GrantorCache实例。
ServiceTicketCache中的ticket实例是用于每次访问受限服务时检验访问的服务得到了授权。每进行一次受限服务检证就产生一个实例。在确认成功后删除。一般发生在从一个已登录的服务跳转到另一个受限服务时。
GrantorCache中的ticket实例是登录成功时进行保存。每次进行验证是否登录成功时,只更新其用于超时验证的时间。用户登录一次产生一个实例。

通过传递的service和ticket验证在ServiceTicketCache中存放的ServiceTicket实例是否存在,且其对应的service是否为当前的Service。如果成功就输出一个XML文件。XML中有用户登录标识username.
edu.yale.its.tp.cas.servlet.CacheInit
这是一个监听器,在应用启动后,读取初始化数据。初始化Ticket的超时时间和设置用于认证用的类型(以. edu.yale.its.tp.cas.ticketTicketGrantingTicket为例)。ServiceTicketCache、GrantorCache为单实例。
edu.yale.its.tp.cas.ticket.GrantorCache
extends ActiveTicketCache implements TicketCache
这是一个用于ticket创建、保存、监测超期的类。
监测是用一个后台守护线路定时轮循,如果ticket超期就删除。
保存是通过一个唯一字符串标识与ticket实例(edu.yale.its.tp.cas.ticket.TicketGrantingTicket)进行关联用于确认。

edu.yale.its.tp.cas.ticket .ServiceTicketCache
extends OTUTicketCache
edu.yale.its.tp.cas.ticket.TicketGrantingTicket
认证存放的内容,主要是登录者姓名,是否超期。

交互图:

[img]http://dl.iteye.com/upload/attachment/246920/300a60d6-73f6-37f7-8e1d-fee29effad6f.jpg[/img]

===待续===
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值