我正在尝试使用Spring Security为我的Web应用程序设置CAS身份验证.我已经按照文档编写并设法将XML配置示例转换为Java配置.但是,我不确定我是否正确地做了所有事情并且考虑到安全性的敏感性,我希望有人确认没有错误.
例如,我如何确定不再有默认配置(例如URL上的自由权限,不同的身份验证管理器和/或提供程序等等)?
我检索当前AuthenticationManager的方式是否正确?
像我做的那样正确配置EntryPoint吗?
我发现理解如何使用WebSecurityConfigurerAdapter相当混乱......
这是我的@Cofiguration类:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Bean(name="authenticationManager")
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
// TODO Auto-generated method stub
return super.authenticationManagerBean();
}
@Bean
public ServiceProperties serviceProperties() {
final ServiceProperties serviceProperties = new ServiceProperties();
serviceProperties.setService("http://localhost:8088/webapp/login/cas");
return serviceProperties;
}
@Bean
public AuthenticationUserDetailsService<CasAssertionAuthenticationToken> authenticationUserDetailsService() {
return new MyCasAssertionUserDetailsService();
}
@Autowired
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
super.configure(auth);
final CasAuthenticationProvider casAuthenticationProvider = new CasAuthenticationProvider();
casAuthenticationProvider.setServiceProperties(serviceProperties());
casAuthenticationProvider.setAuthenticationUserDetailsService(authenticationUserDetailsService());
casAuthenticationProvider.setTicketValidator(new Cas20ProxyTicketValidator("https://my.cas.server.com/cas"));
casAuthenticationProvider.setKey("MY-KEY");
auth.authenticationProvider(casAuthenticationProvider);
}
@Bean
public CasAuthenticationEntryPoint casEntryPoint() …
Run Code Online (Sandbox Code Playgroud) 我试图在升级到spring-boot 1.3之后切换到spring 4.2的本机Global CORS支持,但它似乎不适用于CAS过滤器进程url(/ login/cas).
最初,我使用spring-boot 1.2.7和spring 4.2以及spring-security 4.0.2,并使用自制的基于过滤器的cors支持.我自己的休息服务或CAS ST验证URL运行良好.在我升级到spring-boot 1.3后,即将推出spring-spring-security版本.它停止了工作.经过一些挖掘,通过AddFilterBefore修复此问题.所以基于过滤的CORS似乎也适用于spring-boot 1.3.0 + spring-security-cas.
但是,我想使用本机Global CORS,但似乎无法识别CAS ST验证URL(/ login/cas),但其他端点也可以.
请帮忙.
设置非常简单.
@Configuration
public class CorsConfiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
以下是一些交通:
Request URL:http://localhost:9000/login/cas?ticket=ST-1357-15aQrv93jGEUsQpQRF1P-cas01.example.org
Request Method:GET
Status Code:302 Found
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Content-Length:0
Date:Thu, 19 Nov 2015 09:19:31 GMT
Expires:0
Location:http://localhost:9000/
Pragma:no-cache
Server:Apache-Coyote/1.1
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-XSS-Protection:1; mode=block
Run Code Online (Sandbox Code Playgroud)
以下是控制台错误:
XMLHttpRequest cannot load …
Run Code Online (Sandbox Code Playgroud) 我正在使用CAS 3.5.2和Spring CAS扩展。我正在尝试将j_spring_cas_security_check
URL(以及类似的注销帐户)更改为security_check
。我在Spring文档中读到
Back in the service web application, the CasAuthenticationFilter is always listening for
requests to /j_spring_cas_security_check (this is configurable, but we'll use the defaults
in this introduction).
Run Code Online (Sandbox Code Playgroud)
我以为这只是一个伪URL,可以通过在Spring Security配置中将其设置为bean service
属性的值来更改org.springframework.security.cas.ServiceProperties
,但是更改后,我的CAS SSO
开始崩溃。我没有在客户端或服务器端看到任何异常。
更改此默认路径时,我是否缺少任何明显的步骤?