cas单点登入原理

来源:互联网 发布:域名国外申请做跳转 编辑:程序博客网 时间:2024/04/30 09:36

一·引用背景

      公司在发展过程中会创建越来越多的应用系统,如果对每一个应用系统都去注册一个用户名和密码,到后面一定会出现账户密码的管理问题,cas单点登入功能就可以很好的解决上面的问题,只要把相应的应用系统配置到cas服务器,用户只要登入cas服务器,就可以访问cas服务器下面的所有子应用。

二.cas单点登入原理



cas分服务器和客户端两个部分,其中客户端就是个过滤器,在应用系统中进行配置,对需要权限访问的资源进行拦截
  1. 用户通过浏览器访问某个系统,会被系统配置cas客户端过滤器拦截,判断用户有没有登录(依据:session中的“_const_cas_assertion_”属性)。如果没有,且请求中也没由ticket属性,就重定向到cas服务器的登入地址,地址栏后面会加上service参数(重定向之前你访问的地址),这个service参数cas服务器会保存起来,在做退出操作的时候用作回调地址
  2. 重定向到cas服务器时,服务器通过cookie判断你是否已经登入cas服务器,如果没有,它会让你先登入,登入后会产生一个tgt与tgc,证明用户已经登入cas服务器,同时会产生一个票据(ticket),step4重定向的时候当做参数传过去
  3. 重定向后应用系统的拦截器判断出没有登入但是有ticket,于是带着这个ticket去cas服务做验证,验证通过后会吧拿到的用户信息保存在session的“_const_cas_assertion_”属性里,然后不在执行下面的过滤器,(把ticket参数去掉)再次重定向这个链接
  4. 这次请求拦截判断用户已经登入了(ession中的“_const_cas_assertion_”属性不为空),而且请求中也没有ticket参数,和cas登录相关的过滤器都会放行