spring security 集成cas ,设置首页和login/cas允许匿名通过过滤链,首页可进,login/cas 报401错误
spring security 集成cas ,设置首页和login/cas允许匿名通过过滤链,首页可进,login/cas 报401错误
security配置如下
http
//仅针对/oauth/authorize,/login进行配置,其他按默认配置
.requestMatchers()
//这边若配置上,则会自动跳转授权登录页面
.antMatchers("/**")
.and()
.authorizeRequests()
// .antMatchers("/user/**")
// .hasRole("user")
// .antMatchers("/login/cas")
.antMatchers("/*","login/cas","/document/**","/category/**")
.permitAll()
.anyRequest().authenticated()
.and()
.exceptionHandling()
.authenticationEntryPoint(authenticationEntryPoint)
.and()
.addFilter(casAuthenticationFilter)
.addFilterBefore(singleSignOutFilter, CasAuthenticationFilter.class)
.addFilterBefore(logoutFilter, LogoutFilter.class);
cas 配置如下
@Configuration
public class CasSecurityConfig {
@Autowired
CASClientProperties casClientProperties;
@Autowired
CASServerProperties casServerProperties;
@Autowired
UserDetailsService userDetailService;
@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
@Primary
CasAuthenticationProvider casAuthenticationProvider() {
CasAuthenticationProvider provider = new CasAuthenticationProvider();
provider.setServiceProperties(serviceProperties());
provider.setTicketValidator(ticketValidator());
provider.setUserDetailsService(userDetailService);
provider.setKey("dddd");
return provider;
}
@Bean
CasAuthenticationFilter casAuthenticationFilter(AuthenticationProvider authenticationProvider) {
CasAuthenticationFilter filter = new CasAuthenticationFilter();
filter.setServiceProperties(serviceProperties());
List<AuthenticationProvider> dd= Arrays.asList(authenticationProvider);
filter.setAuthenticationManager(new ProviderManager(dd));
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;
}
}
security配置如下
http
//仅针对/oauth/authorize,/login进行配置,其他按默认配置
.requestMatchers()
//这边若配置上,则会自动跳转授权登录页面
.antMatchers("/**")
.and()
.authorizeRequests()
// .antMatchers("/user/**")
// .hasRole("user")
// .antMatchers("/login/cas")
.antMatchers("/*","login/cas","/document/**","/category/**")
.permitAll()
.anyRequest().authenticated()
.and()
.exceptionHandling()
.authenticationEntryPoint(authenticationEntryPoint)
.and()
.addFilter(casAuthenticationFilter)
.addFilterBefore(singleSignOutFilter, CasAuthenticationFilter.class)
.addFilterBefore(logoutFilter, LogoutFilter.class);
cas 配置如下
@Configuration
public class CasSecurityConfig {
@Autowired
CASClientProperties casClientProperties;
@Autowired
CASServerProperties casServerProperties;
@Autowired
UserDetailsService userDetailService;
@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
@Primary
CasAuthenticationProvider casAuthenticationProvider() {
CasAuthenticationProvider provider = new CasAuthenticationProvider();
provider.setServiceProperties(serviceProperties());
provider.setTicketValidator(ticketValidator());
provider.setUserDetailsService(userDetailService);
provider.setKey("dddd");
return provider;
}
@Bean
CasAuthenticationFilter casAuthenticationFilter(AuthenticationProvider authenticationProvider) {
CasAuthenticationFilter filter = new CasAuthenticationFilter();
filter.setServiceProperties(serviceProperties());
List<AuthenticationProvider> dd= Arrays.asList(authenticationProvider);
filter.setAuthenticationManager(new ProviderManager(dd));
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;
}
}
...全文
相关推荐
Spring Security整合CAS的示例代码
本篇文章主要介绍了Spring Security整合CAS的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring Seucrity整合CAS
自己在工作中学习的时候整理的,如有什么问题或者错误还...
spring security 安全权限管理手册
1、搭建基本的Spring Security项目 2、使用数据库管理用户权限 3、自定义认证数据库表结构 4、自定义登录页面 5、使用数据库管理资源 6、控制用户信息 MD5加密 获取当前用户信息 7、自定义访问拒绝页面 8、动态管理资源结合自定义登录页面 9、 Spring Security 与 CAS整合 配置JA-SIG 配置Spring Security 为CAS配置SSL 10、标签的使用 11、自动登录 12、防御会话伪造 13、切换用户 14、集成jcaptcha
CAS及客户端Acegi的安装配置指南
CAS及客户端Acegi的安装配置指南 CAS及客户端Acegi的安装配置指南
spring-security3的配置与使用
最近项目中要使用到spring-security,闲来没事就研究了下。发现入门挺简单的,在这里把自己的心得发下,希望对没有接触过想接触的朋友有帮助


Java SE
