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屬性是否配置對了
相關文章
相關標籤/搜索