@Bean
ServiceProperties serviceProperties() {
ServiceProperties serviceProperties = new ServiceProperties();
serviceProperties.setService(casClientProperties.getLogin());
return serviceProperties;
}
@Bean
@Primary
AuthenticationEntryPoint authenticationEntryPoint() {
CasAuthenticationEntryPoint entryPoint = new CasAuthenticationEntryPoint();
entryPoint.setLoginUrl(casServerProperties.getLogin());
entryPoint.setServiceProperties(serviceProperties());
return entryPoint;
}
@Bean
TicketValidator ticketValidator() {
return new Cas20ProxyTicketValidator(casServerProperties.getPrefix());
}
@Bean
CasAuthenticationProvider casAuthenticationProvider() {
CasAuthenticationProvider provider = new CasAuthenticationProvider();
provider.setServiceProperties(serviceProperties());
provider.setTicketValidator(ticketValidator());
provider.setUserDetailsService(userDetailService);
provider.setKey("javaboy");
return provider;
}
@Bean
CasAuthenticationFilter casAuthenticationFilter(AuthenticationProvider authenticationProvider) {
CasAuthenticationFilter filter = new CasAuthenticationFilter();
filter.setServiceProperties(serviceProperties());
filter.setAuthenticationManager(new ProviderManager(authenticationProvider));
return filter;
}
@Bean
SingleSignOutFilter singleSignOutFilter() {
SingleSignOutFilter sign = new SingleSignOutFilter();
sign.setIgnoreInitConfiguration(true);
return sign;
}
@Bean
LogoutFilter logoutFilter() {
LogoutFilter filter = new LogoutFilter(casServerProperties.getLogout(), new SecurityContextLogoutHandler());
filter.setFilterProcessesUrl(casClientProperties.getLogoutRelative());
return filter;
}
第一个函数:serviceProperties是用来设置从cas server重定向到cas client使用的,casClientProperties.getLogin()代表的是需要重定向到cas server的访问地址。
第二个函数:authenticationEntryPoint用来设置访问cas server登录地址,以及cas client重定向地址,其中setLoginUrl(casServerProperties.getLogin())用来访问cas server登录界面,setServiceProperties(serviceProperties())用来重定向到cas client
第三个函数:ticketValidator()是用来检测票据(ST),用来判断ST是否有效。
第四个函数:casAuthenticationProvider()表示为需要用到springsecuity特有的loadUserDetail,需要用到用户数据库,用户信息并不可以写死的。
第五个函数:casAuthenticationFilter(AuthenticationProvider authenticationProvider) 表示为首先登录好cas server设定的登录界面,然后会重定向到cas client,并且用上第四个函数,进行读取用户信息。
第六个函数:singleSignOutFilter()表示为:cas client向cas server发送注销信息,如果cas server收到cas client发送信息的话,那么就会自动发送到所有cas client,同时把服务器里存下的TGT信息给删除掉,这样收到cas client发送的TGC后,就搜索不到服务端的TGT了,表明做到单点登出的效果。
第七个函数:logoutFilter()表示为cas server向cas client发送的注销请求。