cas Cas20ProxyReceivingTicketValidationFilter

Cas20ProxyReceivingTicketValidationFilter java

继承AbstractTicketValidationFilter,这里有几个模板方法。例如getTicketValidator,preFilter.服务器

onSuccessfulValidation, onFailedValidation等。大的逻辑在AbstractTicketValidationFilter的doFilter方法中,而Cas20ProxyReceivingTicketValidationFilter主要实现了父类中的模板方法。整体逻辑以下:app

 

Cas20ProxyReceivingTicketValidationFilter 的具体实现
post

preFilterurl

这个方法是判断前置条件,各个子类的前置条件是各个子类本身去去决定的。spa

在本过滤器中,前置条件很简单,参数proxyReceptor为空或者请求uri不是以proxyReceptorUrl结尾的,则返回true,而后读取并相应代理请求。3d

getTicketValidator代理

这个方法主要是产生TicketValidator对象,先来讲说TicketValidator有什么用。TicketValidator只有一个方法code

Assertion validate(String ticket,String service) throw TicketVaidationException;server

根据票据和service来产生Assertion对象,那么究竟是什么票据呢?

还记得CAS登陆整个IE过程么,没有登陆跳转到CAS服务器,认证经过后ie有跳转到须要访问的应用,这个时候会有两个票据产生,一个TGT票据,这个是和用户有关的,另一个是ST票据,ST票据是经过跳转post参数传递过来的,默认的参数为ticket。那么service是什么呢?就是你要访问的app的URL地址,包括url参数,好了知道了TicketValidator的做用,那么咱们来讲说怎么建立TciketValidator对象。

根据acceptAnyProxy,allowedProxyChains,casServerUrlPrefix等参数来建立

其中casServerUrlPrefix是须要要的

 

cas client  加入后出现错误

 
org.jasig.cas.client.validation.TicketValidationException: 
        No principal was found in the response from the CAS server.

出现错误的缘由:查看
Cas20ProxyReceivingTicketValidationFilter的casServerUrlPrefix属性是否配置对了
相关文章
相关标签/搜索