本篇文章将讨论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。这个过滤器的基本流程如下图所示:
看完了这两个过滤器的实现,我们最后看下,一个用户请求从未登录状态访问A应用的页面,被重定向到到CasServer登录,接着访问其他的页面,然后再访问B应用的页面会如何经过这两个过滤器。
分享到:
相关推荐
它提供了配置和过滤器,用于拦截请求并重定向到CAS服务器进行身份验证。 2. 配置文件:在Spring Boot项目中,通常会有一个`application.properties`或`application.yml`文件,用于配置CAS客户端的相关参数,如CAS...
3. **拦截请求**:在Web应用中设置过滤器,如`CasAuthenticationFilter`,来拦截并处理所有需要认证的请求。 4. **处理响应**:配置`CasValidationFilter`和`CasAssertionThreadLocalBinder`来验证从CAS服务器返回...
3. **自定义过滤器**:开发自定义的过滤器来处理CAS返回的票据,并根据票据进行下一步的操作。 综上所述,统一身份认证系统的集成涉及到多个方面的配置和技术细节,包括但不限于JAR包的导入、`web.xml` 的配置修改...
7.4. 使用其他过滤器 —— 基于框架 8. 核心安全过滤器 8.1. FilterSecurityInterceptor 8.2. ExceptionTranslationFilter 8.2.1. AuthenticationEntryPoint 8.2.2. AccessDeniedHandler 8.3. ...
- **CAS (spring-security-cas-client.jar):** 集成 CAS 单点登录系统的客户端。 - **OpenID (spring-security-openid.jar):** 支持 OpenID 身份验证。 **1.4.2 获取源代码** - **途径:** 可以从 GitHub 或者 ...