Browse Source

SecurityContextRepository->SecurityContextServerRepository

Issue gh-4615
Rob Winch 7 years ago
parent
commit
bfcc2a602d
12 changed files with 60 additions and 62 deletions
  1. 21 21
      config/src/main/java/org/springframework/security/config/web/server/HttpSecurity.java
  2. 4 5
      config/src/test/java/org/springframework/security/config/web/server/HttpSecurityTests.java
  3. 9 9
      webflux/src/main/java/org/springframework/security/web/server/authentication/AuthenticationWebFilter.java
  4. 3 3
      webflux/src/main/java/org/springframework/security/web/server/authentication/logout/SecurityContextRepositoryLogoutHandler.java
  5. 2 2
      webflux/src/main/java/org/springframework/security/web/server/context/SecurityContextRepositoryServerWebExchange.java
  6. 2 4
      webflux/src/main/java/org/springframework/security/web/server/context/SecurityContextRepositoryWebFilter.java
  7. 1 1
      webflux/src/main/java/org/springframework/security/web/server/context/SecurityContextServerRepository.java
  8. 2 1
      webflux/src/main/java/org/springframework/security/web/server/context/ServerWebExchangeAttributeSecurityContextServerRepository.java
  9. 2 1
      webflux/src/main/java/org/springframework/security/web/server/context/WebSessionSecurityContextServerRepository.java
  10. 9 9
      webflux/src/test/java/org/springframework/security/web/server/authentication/AuthenticationWebFilterTests.java
  11. 3 4
      webflux/src/test/java/org/springframework/security/web/server/context/SecurityContextServerRepositoryWebFilterTests.java
  12. 2 2
      webflux/src/test/java/org/springframework/security/web/server/context/ServerWebExchangeAttributeSecurityContextServerRepositoryTests.java

+ 21 - 21
config/src/main/java/org/springframework/security/config/web/server/HttpSecurity.java

@@ -44,10 +44,10 @@ import org.springframework.security.web.server.authorization.AuthorizationWebFil
 import org.springframework.security.web.server.authorization.DelegatingReactiveAuthorizationManager;
 import org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter;
 import org.springframework.security.web.server.context.AuthenticationReactorContextFilter;
-import org.springframework.security.web.server.context.SecurityContextRepository;
+import org.springframework.security.web.server.context.SecurityContextServerRepository;
 import org.springframework.security.web.server.context.SecurityContextRepositoryWebFilter;
-import org.springframework.security.web.server.context.ServerWebExchangeAttributeSecurityContextRepository;
-import org.springframework.security.web.server.context.WebSessionSecurityContextRepository;
+import org.springframework.security.web.server.context.ServerWebExchangeAttributeSecurityContextServerRepository;
+import org.springframework.security.web.server.context.WebSessionSecurityContextServerRepository;
 import org.springframework.security.web.server.header.CacheControlHttpHeadersWriter;
 import org.springframework.security.web.server.header.CompositeHttpHeadersWriter;
 import org.springframework.security.web.server.header.ContentTypeOptionsHttpHeadersWriter;
@@ -94,7 +94,7 @@ public class HttpSecurity {
 
 	private ReactiveAuthenticationManager authenticationManager;
 
-	private SecurityContextRepository securityContextRepository;
+	private SecurityContextServerRepository securityContextServerRepository;
 
 	private ServerAuthenticationEntryPoint serverAuthenticationEntryPoint;
 
@@ -127,9 +127,9 @@ public class HttpSecurity {
 		return this.securityMatcher;
 	}
 
-	public HttpSecurity securityContextRepository(SecurityContextRepository securityContextRepository) {
-		Assert.notNull(securityContextRepository, "securityContextRepository cannot be null");
-		this.securityContextRepository = securityContextRepository;
+	public HttpSecurity securityContextRepository(SecurityContextServerRepository securityContextServerRepository) {
+		Assert.notNull(securityContextServerRepository, "securityContextRepository cannot be null");
+		this.securityContextServerRepository = securityContextServerRepository;
 		return this;
 	}
 
@@ -183,15 +183,15 @@ public class HttpSecurity {
 		}
 		if(this.httpBasic != null) {
 			this.httpBasic.authenticationManager(this.authenticationManager);
-			if(this.securityContextRepository != null) {
-				this.httpBasic.securityContextRepository(this.securityContextRepository);
+			if(this.securityContextServerRepository != null) {
+				this.httpBasic.securityContextRepository(this.securityContextServerRepository);
 			}
 			this.httpBasic.configure(this);
 		}
 		if(this.formLogin != null) {
 			this.formLogin.authenticationManager(this.authenticationManager);
-			if(this.securityContextRepository != null) {
-				this.formLogin.securityContextRepository(this.securityContextRepository);
+			if(this.securityContextServerRepository != null) {
+				this.formLogin.securityContextRepository(this.securityContextServerRepository);
 			}
 			if(this.formLogin.serverAuthenticationEntryPoint == null) {
 				this.webFilters.add(new OrderedWebFilter(new LoginPageGeneratingWebFilter(), SecurityWebFiltersOrder.LOGIN_PAGE_GENERATING.getOrder()));
@@ -233,7 +233,7 @@ public class HttpSecurity {
 	}
 
 	private WebFilter securityContextRepositoryWebFilter() {
-		SecurityContextRepository repository = this.securityContextRepository;
+		SecurityContextServerRepository repository = this.securityContextServerRepository;
 		if(repository == null) {
 			return null;
 		}
@@ -322,7 +322,7 @@ public class HttpSecurity {
 	public class HttpBasicBuilder {
 		private ReactiveAuthenticationManager authenticationManager;
 
-		private SecurityContextRepository securityContextRepository = new ServerWebExchangeAttributeSecurityContextRepository();
+		private SecurityContextServerRepository securityContextServerRepository = new ServerWebExchangeAttributeSecurityContextServerRepository();
 
 		private ServerAuthenticationEntryPoint entryPoint = new HttpBasicServerAuthenticationEntryPoint();
 
@@ -331,8 +331,8 @@ public class HttpSecurity {
 			return this;
 		}
 
-		public HttpBasicBuilder securityContextRepository(SecurityContextRepository securityContextRepository) {
-			this.securityContextRepository = securityContextRepository;
+		public HttpBasicBuilder securityContextRepository(SecurityContextServerRepository securityContextServerRepository) {
+			this.securityContextServerRepository = securityContextServerRepository;
 			return this;
 		}
 
@@ -357,8 +357,8 @@ public class HttpSecurity {
 				this.authenticationManager);
 			authenticationFilter.setAuthenticationFailureHandler(new AuthenticationEntryPointFailureHandler(this.entryPoint));
 			authenticationFilter.setAuthenticationConverter(new ServerHttpBasicAuthenticationConverter());
-			if(this.securityContextRepository != null) {
-				authenticationFilter.setSecurityContextRepository(this.securityContextRepository);
+			if(this.securityContextServerRepository != null) {
+				authenticationFilter.setSecurityContextServerRepository(this.securityContextServerRepository);
 			}
 			http.addFilterAt(authenticationFilter, SecurityWebFiltersOrder.HTTP_BASIC);
 		}
@@ -373,7 +373,7 @@ public class HttpSecurity {
 	public class FormLoginBuilder {
 		private ReactiveAuthenticationManager authenticationManager;
 
-		private SecurityContextRepository securityContextRepository = new WebSessionSecurityContextRepository();
+		private SecurityContextServerRepository securityContextServerRepository = new WebSessionSecurityContextServerRepository();
 
 		private ServerAuthenticationEntryPoint serverAuthenticationEntryPoint;
 
@@ -408,8 +408,8 @@ public class HttpSecurity {
 			return this;
 		}
 
-		public FormLoginBuilder securityContextRepository(SecurityContextRepository securityContextRepository) {
-			this.securityContextRepository = securityContextRepository;
+		public FormLoginBuilder securityContextRepository(SecurityContextServerRepository securityContextServerRepository) {
+			this.securityContextServerRepository = securityContextServerRepository;
 			return this;
 		}
 
@@ -436,7 +436,7 @@ public class HttpSecurity {
 			authenticationFilter.setAuthenticationFailureHandler(this.authenticationFailureHandler);
 			authenticationFilter.setAuthenticationConverter(new ServerFormLoginAuthenticationConverter());
 			authenticationFilter.setAuthenticationSuccessHandler(new RedirectAuthenticationSuccessHandler("/"));
-			authenticationFilter.setSecurityContextRepository(this.securityContextRepository);
+			authenticationFilter.setSecurityContextServerRepository(this.securityContextServerRepository);
 			http.addFilterAt(authenticationFilter, SecurityWebFiltersOrder.FORM_LOGIN);
 		}
 

+ 4 - 5
config/src/test/java/org/springframework/security/config/web/server/HttpSecurityTests.java

@@ -26,8 +26,8 @@ import org.springframework.security.authentication.ReactiveAuthenticationManager
 import org.springframework.security.authentication.TestingAuthenticationToken;
 import org.springframework.security.test.web.reactive.server.WebTestClientBuilder;
 import org.springframework.security.web.server.WebFilterChainProxy;
-import org.springframework.security.web.server.context.SecurityContextRepository;
-import org.springframework.security.web.server.context.WebSessionSecurityContextRepository;
+import org.springframework.security.web.server.context.SecurityContextServerRepository;
+import org.springframework.security.web.server.context.WebSessionSecurityContextServerRepository;
 import org.springframework.test.web.reactive.server.EntityExchangeResult;
 import org.springframework.test.web.reactive.server.FluxExchangeResult;
 import org.springframework.test.web.reactive.server.WebTestClient;
@@ -45,8 +45,7 @@ import static org.springframework.web.reactive.function.client.ExchangeFilterFun
  */
 @RunWith(MockitoJUnitRunner.class)
 public class HttpSecurityTests {
-	@Mock
-	SecurityContextRepository contextRepository;
+	@Mock SecurityContextServerRepository contextRepository;
 	@Mock
 	ReactiveAuthenticationManager authenticationManager;
 
@@ -78,7 +77,7 @@ public class HttpSecurityTests {
 	public void basic() {
 		given(this.authenticationManager.authenticate(any())).willReturn(Mono.just(new TestingAuthenticationToken("rob", "rob", "ROLE_USER", "ROLE_ADMIN")));
 
-		this.http.securityContextRepository(new WebSessionSecurityContextRepository());
+		this.http.securityContextRepository(new WebSessionSecurityContextServerRepository());
 		this.http.httpBasic();
 		this.http.authenticationManager(this.authenticationManager);
 		HttpSecurity.AuthorizeExchangeBuilder authorize = this.http.authorizeExchange();

+ 9 - 9
webflux/src/main/java/org/springframework/security/web/server/authentication/AuthenticationWebFilter.java

@@ -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) {

+ 3 - 3
webflux/src/main/java/org/springframework/security/web/server/authentication/logout/SecurityContextRepositoryLogoutHandler.java

@@ -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");
 

+ 2 - 2
webflux/src/main/java/org/springframework/security/web/server/context/SecurityContextRepositoryServerWebExchange.java

@@ -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;
 	}

+ 2 - 4
webflux/src/main/java/org/springframework/security/web/server/context/SecurityContextRepositoryWebFilter.java

@@ -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;
 	}

+ 1 - 1
webflux/src/main/java/org/springframework/security/web/server/context/SecurityContextRepository.java → webflux/src/main/java/org/springframework/security/web/server/context/SecurityContextServerRepository.java

@@ -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);
 

+ 2 - 1
webflux/src/main/java/org/springframework/security/web/server/context/ServerWebExchangeAttributeSecurityContextRepository.java → webflux/src/main/java/org/springframework/security/web/server/context/ServerWebExchangeAttributeSecurityContextServerRepository.java

@@ -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) {

+ 2 - 1
webflux/src/main/java/org/springframework/security/web/server/context/WebSessionSecurityContextRepository.java → webflux/src/main/java/org/springframework/security/web/server/context/WebSessionSecurityContextServerRepository.java

@@ -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) {

+ 9 - 9
webflux/src/test/java/org/springframework/security/web/server/authentication/AuthenticationWebFilterTests.java

@@ -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);
 	}
 

+ 3 - 4
webflux/src/test/java/org/springframework/security/web/server/context/SecurityContextRepositoryWebFilterTests.java → webflux/src/test/java/org/springframework/security/web/server/context/SecurityContextServerRepositoryWebFilterTests.java

@@ -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);
 	}
 

+ 2 - 2
webflux/src/test/java/org/springframework/security/web/server/context/ServerWebExchangeAttributeSecurityContextRepositoryTests.java → webflux/src/test/java/org/springframework/security/web/server/context/ServerWebExchangeAttributeSecurityContextServerRepositoryTests.java

@@ -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