Springboot集成cas
1.ProductStandaloneApplicationConfig类中注入过滤器。
代码如下:
@Bean
public FilterRegistrationBean acasSingleSignOutFileter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setName(“CASSingleSignOutFilter”);
filterRegistrationBean.addInitParameter(“casServerUrlPrefix”, casServerUrlPrefix);
filterRegistrationBean.setFilter(new org.jasig.cas.client.session.SingleSignOutFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);
return filterRegistrationBean;
}
@Bean()
public FilterRegistrationBean<Filter> casAuthenticationFileter(){
FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<Filter>();
filterRegistrationBean.setName("CASAuthenticationFilter");
filterRegistrationBean.setFilter(new org.jasig.cas.client.authentication.AuthenticationFilter());
filterRegistrationBean.addInitParameter("casServerLoginUrl", casServerLoginUrl);
filterRegistrationBean.addInitParameter("serverName", serverName);
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);
return filterRegistrationBean;
}
@Bean()
public FilterRegistrationBean<Filter> casValidationFilter(){
FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<Filter>();
filterRegistrationBean.setName("CASValidationFilter");
filterRegistrationBean.setFilter(new org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter());
filterRegistrationBean.addInitParameter("casServerUrlPrefix", casServerUrlPrefix);
filterRegistrationBean.addInitParameter("serverName", serverName);
filterRegistrationBean.addInitParameter("redirectAfterValidation", "true");
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);
return filterRegistrationBean;
}
@Bean
public FilterRegistrationBean<Filter> casAssertionThreadLocalFilter(){
FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<Filter>();
filterRegistrationBean.setName("CASAssertionThreadLocalFilter");
filterRegistrationBean.setFilter(new org.jasig.cas.client.util.AssertionThreadLocalFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);
return filterRegistrationBean;
}
@Bean
public ServletListenerRegistrationBean<EventListener> registerListener() {
// 创建Listener注册Bean
ServletListenerRegistrationBean<EventListener> registration = new ServletListenerRegistrationBean<>();
// 注册Listener
registration.setListener(new org.jasig.cas.client.session.SingleSignOutHttpSessionListener());
// 设置排序,在存在多个Listener实例的情况下确定Listener的执行顺序
registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);
return registration;
}
2.sys-security配置
OauthPreAuthenticatedProcessingFilter类中返回账号信息给security框架。
3.Security会拦截特殊字符。可以取消这个过滤