cas工作原理浅析与总结

CAS( Central Authentication Service )是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。
其流程用时序图描述如下:
图片描述

  1. 请求app地址http://www.app.com
  2. app端(cas client)AuthenticationFilter中校验session中_const_cas_assertion_,不为空,直接放过url;否则获取request中的ticket参数,request中无ticket,302重定向到cas server地址,url中带上service参数http://www.casserver.com/?ser...://www.app.com
  3. cas server先判断context中是否有service对应的TGT
  4. 判断没有TGT,返回login form(客户端跳转至cas server登录页地址)
  5. 用户输入登录信息,form提交至cas server
  6. cas server验证登录信息,生成TGT和ST
  7. 设置TGC至cookie,url中显式带上ticket(STid)参数,重定向Browser至App
  8. App中AbstractTicketValidationFilter 会向cas server请求校验ticket,带上ticket(STid)和service(回调地址)参数
  9. cas server通过ServiceValidateController校验ticket
  10. 确认有效后返回校验成功
  11. 此时App中会根据成功结果,在session中设置_const_cas_assertion_属性
  12. 重定向到app,此时url中不带有ticket参数
  13. 这时再经过AuthenticationFilter时,session中有_const_cas_assertion_属性,放行;再经过AbstractTicketValidationFilter时,request中没有ticket参数,放行,访问目标资源
  14. 返回目标资源给browser

要点如下:

  1. 如若第4步中,判断结果为有service对应的TGT,先验证ticket(TGTid)、service是否合法,再根据renew参数看是否要重新创建service ticket,若要重新创建,则需要重新登录;否则重新转向service地址
  2. 如若app端想使用自己的自定义登录界面,可以在第4步中不跳转cas server的登录页地址,转而跳转至自定义登录页面。但需要向cas server端请求login ticket,在用户填写登录表单后,连同login ticket一同传参至cas server去做校验
  3. 第6步中,TGT和ST的生成规则(这里指TGTid和STid的生成规则,TGT和ST均为类):"TGT_XX_RandomStr" "ST_XXX_RandomStr"。XX、XXX为AtomicLong.getAndIncrement()方法自增Long类型数字(最大值时,调用AtomicLong.compareAndSet()方法置0);RandomStr为随机字符串
  4. 步骤12中再已校验完用户信息的情况下,再次进行重定向的目的,是为了隐藏第7步重定向时url中的ticket入参
  5. 单点登录的目的,是让用户登录App1后,如有权限,可免登录,直接访问App2、App3等。cas的实现方式,是在访问其他App时,使用Cas Proxy。实现原理是App1先通过Cas Server的认证,然后向Cas Server申请一个针对于App2的proxy ticket,之后在访问App2时把申请到的针对于App2的proxy ticket以参数ticket传递过去。后面的流程与上述cas流程步骤8及以后步骤类似
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值