CasClient3.1过滤器分析- - JavaEye技术网站
    本篇文章将讨论CasClient的两个过滤器AuthenticationFilter和TicketValidationFilter 。这两个过滤器将按先后顺序配置在需要使用到SSO的应用服务中。
    一.AuthenticationFilter
    这个过滤器判断用户是否已登录,若没有,则重定向到CasServer。
    主要的业务逻辑都在doFilter方法,里面有几个变量注意下:
    assertion:代表了一个验证请求的响应,里面封装了验证时间,验证主体(Principal)等信息。
    ticket:代表了访问一个应用服务所需的票据。
    wasGatewayed:不明白具体的意义,只知道是根据保存在session中的一个属性值来判断的一个boolean类型的值,当用户初次访问应用服务并且未登录的时候为false,在casclient重定向到casserver时,若过滤器的gateway参数为true的时候,会设置对应session中的属性值,这样在第二次经过这个过滤器的时候就会为true了。而当从这个过滤器到下一个过滤器之前,又会清空session中对应的属性值,这样在第三次经过这个过滤器的时候又为false了~~
    这个过滤器的基本流程如下图所示:

    二.TicketValidationFilter
    这个过滤器是用来转发验证浏览器传来的Ticket的。Cas中实际上是没有这个类的,但是有几个备选的实现类:Cas10TicketValidationFilter,Saml11TicketValidationFilter,Cas20ProxyReceivingTicketValidationFilter。它们分别对应了不同的协议,这里我们也不管这些具体的实现类,我们看它们的共有的父类:AbstractTicketValidationFilter,在这个类的doFilter方法中会先调用一个preFiilter方法,这个方法我们除了Cas20ProxyReceivingTicketValidationFilter有具体的实现外,其他两个都是空实现。我们先认为这个方法都返回true。这个过滤器的基本流程如下图所示:


    看完了这两个过滤器的实现,我们{zh1}看下,一个用户请求从未登录状态访问A应用的页面,被重定向到到CasServer登录,接着访问其他的页面,然后再访问B应用的页面会如何经过这两个过滤器。
{zx1}评论

  • 五月天 写道应该是参照了javascript的高级程序设计这本书吧?这本书的确写的 ...
    -- by

  • 很多都没用到过,谢谢,学习了
    -- by

  • 应该是参照了javascript的高级程序设计这本书吧?这本书的确写的不错,总结还 ...
    -- by

  • user.setTestEnterprise(enterprise);? 这句一定 ...
    -- by

  • 不产生update语句的话怎么设置关联关系呢。讨厌的是关联关系已经存在的时候,你去 ...
    -- by
郑重声明:资讯 【CasClient3.1过滤器分析- - JavaEye技术网站】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——