SEC-2932: SecurityContextConfigurer defaults SecurityContextRepository

This commit is contained in:
Rob Winch 2015-04-22 16:50:51 -05:00
parent 1bca645add
commit f548d89b27
2 changed files with 45 additions and 0 deletions

View File

@ -20,6 +20,7 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.context.HttpSessionSecurityContextRepository;
import org.springframework.security.web.context.SecurityContextPersistenceFilter;
import org.springframework.security.web.context.SecurityContextRepository;
@ -85,6 +86,9 @@ public final class SecurityContextConfigurer<H extends HttpSecurityBuilder<H>> e
SecurityContextRepository securityContextRepository = http
.getSharedObject(SecurityContextRepository.class);
if(securityContextRepository == null) {
securityContextRepository = new HttpSessionSecurityContextRepository();
}
SecurityContextPersistenceFilter securityContextFilter = new SecurityContextPersistenceFilter(
securityContextRepository);
SessionManagementConfigurer<?> sessionManagement = http

View File

@ -24,6 +24,7 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
import org.springframework.security.web.context.SecurityContextPersistenceFilter
import org.springframework.security.web.context.SecurityContextRepository
import org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter
/**
*
@ -67,4 +68,44 @@ class SecurityContextConfigurerTests extends BaseSpringSpec {
.securityContext()
}
}
def 'SEC-2932: SecurityContextConfigurer defaults SecurityContextRepository'() {
setup: 'Configuration without default SecurityContextRepository setup'
loadConfig(SecurityContextRepositoryDefaultsSecurityContextRepositoryConfig)
when: 'Spring Security invoked'
springSecurityFilterChain.doFilter(request,response,chain)
then: 'no exception thrown'
noExceptionThrown()
}
@Configuration
@EnableWebSecurity
static class SecurityContextRepositoryDefaultsSecurityContextRepositoryConfig extends WebSecurityConfigurerAdapter {
public SecurityContextRepositoryDefaultsSecurityContextRepositoryConfig() {
super(true);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.addFilter(new WebAsyncManagerIntegrationFilter())
.anonymous().and()
.securityContext().and()
.authorizeRequests()
.anyRequest().permitAll()
.and()
.httpBasic();
// @formatter:on
}
// @formatter:off
@Override
protected void configure(AuthenticationManagerBuilder auth) {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER")
}
// @formatter:on
}
}