SecurityContextRepository->SecurityContextServerRepository

Issue gh-4615
This commit is contained in:
Rob Winch
2017-10-10 14:31:50 -05:00
parent 57d26ffa10
commit bfcc2a602d
12 changed files with 60 additions and 62 deletions

View File

@@ -26,9 +26,9 @@ import org.springframework.security.core.context.SecurityContextImpl;
import org.springframework.security.web.server.ServerHttpBasicAuthenticationConverter;
import org.springframework.security.web.server.WebFilterExchange;
import org.springframework.security.web.server.authentication.www.HttpBasicServerAuthenticationEntryPoint;
import org.springframework.security.web.server.context.SecurityContextRepository;
import org.springframework.security.web.server.context.SecurityContextServerRepository;
import org.springframework.security.web.server.context.SecurityContextRepositoryServerWebExchange;
import org.springframework.security.web.server.context.ServerWebExchangeAttributeSecurityContextRepository;
import org.springframework.security.web.server.context.ServerWebExchangeAttributeSecurityContextServerRepository;
import org.springframework.security.web.server.util.matcher.ServerWebExchangeMatcher;
import org.springframework.security.web.server.util.matcher.ServerWebExchangeMatchers;
import org.springframework.util.Assert;
@@ -51,7 +51,7 @@ public class AuthenticationWebFilter implements WebFilter {
private AuthenticationFailureHandler authenticationFailureHandler = new AuthenticationEntryPointFailureHandler(new HttpBasicServerAuthenticationEntryPoint());
private SecurityContextRepository securityContextRepository = new ServerWebExchangeAttributeSecurityContextRepository();
private SecurityContextServerRepository securityContextServerRepository = new ServerWebExchangeAttributeSecurityContextServerRepository();
private ServerWebExchangeMatcher requiresAuthenticationMatcher = ServerWebExchangeMatchers.anyExchange();
@@ -62,7 +62,7 @@ public class AuthenticationWebFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
ServerWebExchange wrappedExchange = new SecurityContextRepositoryServerWebExchange(exchange, this.securityContextRepository);
ServerWebExchange wrappedExchange = new SecurityContextRepositoryServerWebExchange(exchange, this.securityContextServerRepository);
return filterInternal(wrappedExchange, chain);
}
@@ -86,14 +86,14 @@ public class AuthenticationWebFilter implements WebFilter {
ServerWebExchange exchange = webFilterExchange.getExchange();
SecurityContextImpl securityContext = new SecurityContextImpl();
securityContext.setAuthentication(authentication);
return this.securityContextRepository.save(exchange, securityContext)
return this.securityContextServerRepository.save(exchange, securityContext)
.then(this.authenticationSuccessHandler.success(authentication, webFilterExchange));
}
public void setSecurityContextRepository(
SecurityContextRepository securityContextRepository) {
Assert.notNull(securityContextRepository, "securityContextRepository cannot be null");
this.securityContextRepository = securityContextRepository;
public void setSecurityContextServerRepository(
SecurityContextServerRepository securityContextServerRepository) {
Assert.notNull(securityContextServerRepository, "securityContextRepository cannot be null");
this.securityContextServerRepository = securityContextServerRepository;
}
public void setAuthenticationSuccessHandler(AuthenticationSuccessHandler authenticationSuccessHandler) {

View File

@@ -19,9 +19,9 @@ package org.springframework.security.web.server.authentication.logout;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.server.DefaultServerRedirectStrategy;
import org.springframework.security.web.server.ServerRedirectStrategy;
import org.springframework.security.web.server.context.SecurityContextRepository;
import org.springframework.security.web.server.context.SecurityContextServerRepository;
import org.springframework.security.web.server.WebFilterExchange;
import org.springframework.security.web.server.context.WebSessionSecurityContextRepository;
import org.springframework.security.web.server.context.WebSessionSecurityContextServerRepository;
import reactor.core.publisher.Mono;
import java.net.URI;
@@ -31,7 +31,7 @@ import java.net.URI;
* @since 5.0
*/
public class SecurityContextRepositoryLogoutHandler implements LogoutHandler {
private SecurityContextRepository repository = new WebSessionSecurityContextRepository();
private SecurityContextServerRepository repository = new WebSessionSecurityContextServerRepository();
private URI logoutSuccessUrl = URI.create("/login?logout");

View File

@@ -27,9 +27,9 @@ import reactor.core.publisher.Mono;
* @since 5.0
*/
public class SecurityContextRepositoryServerWebExchange extends ServerWebExchangeDecorator {
private final SecurityContextRepository repository;
private final SecurityContextServerRepository repository;
public SecurityContextRepositoryServerWebExchange(ServerWebExchange delegate, SecurityContextRepository repository) {
public SecurityContextRepositoryServerWebExchange(ServerWebExchange delegate, SecurityContextServerRepository repository) {
super(delegate);
this.repository = repository;
}

View File

@@ -15,8 +15,6 @@
*/
package org.springframework.security.web.server.context;
import org.springframework.security.web.server.context.SecurityContextRepository;
import org.springframework.security.web.server.context.SecurityContextRepositoryServerWebExchange;
import org.springframework.util.Assert;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
@@ -28,9 +26,9 @@ import reactor.core.publisher.Mono;
* @since 5.0
*/
public class SecurityContextRepositoryWebFilter implements WebFilter {
private final SecurityContextRepository repository;
private final SecurityContextServerRepository repository;
public SecurityContextRepositoryWebFilter(SecurityContextRepository repository) {
public SecurityContextRepositoryWebFilter(SecurityContextServerRepository repository) {
Assert.notNull(repository, "repository cannot be null");
this.repository = repository;
}

View File

@@ -20,7 +20,7 @@ import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
public interface SecurityContextRepository {
public interface SecurityContextServerRepository {
Mono<Void> save(ServerWebExchange exchange, SecurityContext context);

View File

@@ -25,7 +25,8 @@ import reactor.core.publisher.Mono;
* @author Rob Winch
* @since 5.0
*/
public class ServerWebExchangeAttributeSecurityContextRepository implements SecurityContextRepository {
public class ServerWebExchangeAttributeSecurityContextServerRepository
implements SecurityContextServerRepository {
final String ATTR = "USER";
public Mono<Void> save(ServerWebExchange exchange, SecurityContext context) {

View File

@@ -25,7 +25,8 @@ import reactor.core.publisher.Mono;
* @author Rob Winch
* @since 5.0
*/
public class WebSessionSecurityContextRepository implements SecurityContextRepository {
public class WebSessionSecurityContextServerRepository
implements SecurityContextServerRepository {
final String SESSION_ATTR = "USER";
public Mono<Void> save(ServerWebExchange exchange, SecurityContext context) {

View File

@@ -30,7 +30,7 @@ import org.springframework.security.authentication.ReactiveAuthenticationManager
import org.springframework.security.authentication.TestingAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.test.web.reactive.server.WebTestClientBuilder;
import org.springframework.security.web.server.context.SecurityContextRepository;
import org.springframework.security.web.server.context.SecurityContextServerRepository;
import org.springframework.security.web.server.util.matcher.ServerWebExchangeMatcher;
import org.springframework.test.web.reactive.server.EntityExchangeResult;
import org.springframework.test.web.reactive.server.WebTestClient;
@@ -62,7 +62,7 @@ public class AuthenticationWebFilterTests {
@Mock
private AuthenticationFailureHandler failureHandler;
@Mock
private SecurityContextRepository securityContextRepository;
private SecurityContextServerRepository securityContextServerRepository;
private AuthenticationWebFilter filter;
@@ -71,7 +71,7 @@ public class AuthenticationWebFilterTests {
this.filter = new AuthenticationWebFilter(this.authenticationManager);
this.filter.setAuthenticationSuccessHandler(this.successHandler);
this.filter.setAuthenticationConverter(this.authenticationConverter);
this.filter.setSecurityContextRepository(this.securityContextRepository);
this.filter.setSecurityContextServerRepository(this.securityContextServerRepository);
this.filter.setAuthenticationFailureHandler(this.failureHandler);
}
@@ -154,7 +154,7 @@ public class AuthenticationWebFilterTests {
.expectBody(String.class).consumeWith(b -> assertThat(b.getResponseBody()).isEqualTo("ok"))
.returnResult();
verify(this.securityContextRepository, never()).save(any(), any());
verify(this.securityContextServerRepository, never()).save(any(), any());
verifyZeroInteractions(this.authenticationManager, this.successHandler,
this.failureHandler);
}
@@ -174,7 +174,7 @@ public class AuthenticationWebFilterTests {
.expectStatus().is5xxServerError()
.expectBody().isEmpty();
verify(this.securityContextRepository, never()).save(any(), any());
verify(this.securityContextServerRepository, never()).save(any(), any());
verifyZeroInteractions(this.authenticationManager, this.successHandler,
this.failureHandler);
}
@@ -185,7 +185,7 @@ public class AuthenticationWebFilterTests {
when(this.authenticationConverter.apply(any())).thenReturn(authentication);
when(this.authenticationManager.authenticate(any())).thenReturn(authentication);
when(this.successHandler.success(any(),any())).thenReturn(Mono.empty());
when(this.securityContextRepository.save(any(),any())).thenAnswer( a -> Mono.just(a.getArguments()[0]));
when(this.securityContextServerRepository.save(any(),any())).thenAnswer( a -> Mono.just(a.getArguments()[0]));
WebTestClient client = WebTestClientBuilder
.bindToWebFilters(this.filter)
@@ -199,7 +199,7 @@ public class AuthenticationWebFilterTests {
.expectBody().isEmpty();
verify(this.successHandler).success(eq(authentication.block()), any());
verify(this.securityContextRepository).save(any(), any());
verify(this.securityContextServerRepository).save(any(), any());
verifyZeroInteractions(this.failureHandler);
}
@@ -244,7 +244,7 @@ public class AuthenticationWebFilterTests {
.expectBody().isEmpty();
verify(this.failureHandler).onAuthenticationFailure(any(),any());
verify(this.securityContextRepository, never()).save(any(), any());
verify(this.securityContextServerRepository, never()).save(any(), any());
verifyZeroInteractions(this.successHandler);
}
@@ -265,7 +265,7 @@ public class AuthenticationWebFilterTests {
.expectStatus().is5xxServerError()
.expectBody().isEmpty();
verify(this.securityContextRepository, never()).save(any(), any());
verify(this.securityContextServerRepository, never()).save(any(), any());
verifyZeroInteractions(this.successHandler, this.failureHandler);
}

View File

@@ -40,12 +40,11 @@ import static org.mockito.Mockito.*;
* @since 5.0
*/
@RunWith(MockitoJUnitRunner.class)
public class SecurityContextRepositoryWebFilterTests {
public class SecurityContextServerRepositoryWebFilterTests {
@Mock
Authentication principal;
@Mock
SecurityContextRepository repository;
@Mock SecurityContextServerRepository repository;
MockServerHttpRequest.BaseBuilder<?> exchange = MockServerHttpRequest.get("/");
@@ -62,7 +61,7 @@ public class SecurityContextRepositoryWebFilterTests {
@Test(expected = IllegalArgumentException.class)
public void constructorNullSecurityContextRepository() {
SecurityContextRepository repository = null;
SecurityContextServerRepository repository = null;
new SecurityContextRepositoryWebFilter(repository);
}

View File

@@ -29,8 +29,8 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Rob Winch
* @since 5.0
*/
public class ServerWebExchangeAttributeSecurityContextRepositoryTests {
ServerWebExchangeAttributeSecurityContextRepository repository = new ServerWebExchangeAttributeSecurityContextRepository();
public class ServerWebExchangeAttributeSecurityContextServerRepositoryTests {
ServerWebExchangeAttributeSecurityContextServerRepository repository = new ServerWebExchangeAttributeSecurityContextServerRepository();
ServerWebExchange exchange = MockServerHttpRequest.get("/").toExchange();
@Test