mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-28 23:02:15 +00:00
AuthenticationFailureHandler->ServerAuthenticationFailureHandler
Issue gh-4615
This commit is contained in:
parent
897e7111e3
commit
c9ce528206
@ -30,8 +30,8 @@ import org.springframework.security.web.server.ServerFormLoginAuthenticationConv
|
|||||||
import org.springframework.security.web.server.ServerHttpBasicAuthenticationConverter;
|
import org.springframework.security.web.server.ServerHttpBasicAuthenticationConverter;
|
||||||
import org.springframework.security.web.server.MatcherSecurityWebFilterChain;
|
import org.springframework.security.web.server.MatcherSecurityWebFilterChain;
|
||||||
import org.springframework.security.web.server.SecurityWebFilterChain;
|
import org.springframework.security.web.server.SecurityWebFilterChain;
|
||||||
import org.springframework.security.web.server.authentication.AuthenticationEntryPointFailureHandler;
|
import org.springframework.security.web.server.authentication.ServerAuthenticationEntryPointFailureHandler;
|
||||||
import org.springframework.security.web.server.authentication.AuthenticationFailureHandler;
|
import org.springframework.security.web.server.authentication.ServerAuthenticationFailureHandler;
|
||||||
import org.springframework.security.web.server.authentication.AuthenticationWebFilter;
|
import org.springframework.security.web.server.authentication.AuthenticationWebFilter;
|
||||||
import org.springframework.security.web.server.authentication.RedirectServerAuthenticationEntryPoint;
|
import org.springframework.security.web.server.authentication.RedirectServerAuthenticationEntryPoint;
|
||||||
import org.springframework.security.web.server.authentication.RedirectServerAuthenticationSuccessHandler;
|
import org.springframework.security.web.server.authentication.RedirectServerAuthenticationSuccessHandler;
|
||||||
@ -355,7 +355,7 @@ public class HttpSecurity {
|
|||||||
HttpSecurity.this.defaultEntryPoints.add(new DelegateEntry(restMatcher, this.entryPoint));
|
HttpSecurity.this.defaultEntryPoints.add(new DelegateEntry(restMatcher, this.entryPoint));
|
||||||
AuthenticationWebFilter authenticationFilter = new AuthenticationWebFilter(
|
AuthenticationWebFilter authenticationFilter = new AuthenticationWebFilter(
|
||||||
this.authenticationManager);
|
this.authenticationManager);
|
||||||
authenticationFilter.setAuthenticationFailureHandler(new AuthenticationEntryPointFailureHandler(this.entryPoint));
|
authenticationFilter.setServerAuthenticationFailureHandler(new ServerAuthenticationEntryPointFailureHandler(this.entryPoint));
|
||||||
authenticationFilter.setAuthenticationConverter(new ServerHttpBasicAuthenticationConverter());
|
authenticationFilter.setAuthenticationConverter(new ServerHttpBasicAuthenticationConverter());
|
||||||
if(this.securityContextServerRepository != null) {
|
if(this.securityContextServerRepository != null) {
|
||||||
authenticationFilter.setSecurityContextServerRepository(this.securityContextServerRepository);
|
authenticationFilter.setSecurityContextServerRepository(this.securityContextServerRepository);
|
||||||
@ -379,7 +379,7 @@ public class HttpSecurity {
|
|||||||
|
|
||||||
private ServerWebExchangeMatcher requiresAuthenticationMatcher;
|
private ServerWebExchangeMatcher requiresAuthenticationMatcher;
|
||||||
|
|
||||||
private AuthenticationFailureHandler authenticationFailureHandler;
|
private ServerAuthenticationFailureHandler serverAuthenticationFailureHandler;
|
||||||
|
|
||||||
public FormLoginBuilder authenticationManager(ReactiveAuthenticationManager authenticationManager) {
|
public FormLoginBuilder authenticationManager(ReactiveAuthenticationManager authenticationManager) {
|
||||||
this.authenticationManager = authenticationManager;
|
this.authenticationManager = authenticationManager;
|
||||||
@ -389,7 +389,7 @@ public class HttpSecurity {
|
|||||||
public FormLoginBuilder loginPage(String loginPage) {
|
public FormLoginBuilder loginPage(String loginPage) {
|
||||||
this.serverAuthenticationEntryPoint = new RedirectServerAuthenticationEntryPoint(loginPage);
|
this.serverAuthenticationEntryPoint = new RedirectServerAuthenticationEntryPoint(loginPage);
|
||||||
this.requiresAuthenticationMatcher = ServerWebExchangeMatchers.pathMatchers(HttpMethod.POST, loginPage);
|
this.requiresAuthenticationMatcher = ServerWebExchangeMatchers.pathMatchers(HttpMethod.POST, loginPage);
|
||||||
this.authenticationFailureHandler = new AuthenticationEntryPointFailureHandler(new RedirectServerAuthenticationEntryPoint(loginPage + "?error"));
|
this.serverAuthenticationFailureHandler = new ServerAuthenticationEntryPointFailureHandler(new RedirectServerAuthenticationEntryPoint(loginPage + "?error"));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -403,8 +403,8 @@ public class HttpSecurity {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public FormLoginBuilder authenticationFailureHandler(AuthenticationFailureHandler authenticationFailureHandler) {
|
public FormLoginBuilder authenticationFailureHandler(ServerAuthenticationFailureHandler serverAuthenticationFailureHandler) {
|
||||||
this.authenticationFailureHandler = authenticationFailureHandler;
|
this.serverAuthenticationFailureHandler = serverAuthenticationFailureHandler;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -433,7 +433,7 @@ public class HttpSecurity {
|
|||||||
AuthenticationWebFilter authenticationFilter = new AuthenticationWebFilter(
|
AuthenticationWebFilter authenticationFilter = new AuthenticationWebFilter(
|
||||||
this.authenticationManager);
|
this.authenticationManager);
|
||||||
authenticationFilter.setRequiresAuthenticationMatcher(this.requiresAuthenticationMatcher);
|
authenticationFilter.setRequiresAuthenticationMatcher(this.requiresAuthenticationMatcher);
|
||||||
authenticationFilter.setAuthenticationFailureHandler(this.authenticationFailureHandler);
|
authenticationFilter.setServerAuthenticationFailureHandler(this.serverAuthenticationFailureHandler);
|
||||||
authenticationFilter.setAuthenticationConverter(new ServerFormLoginAuthenticationConverter());
|
authenticationFilter.setAuthenticationConverter(new ServerFormLoginAuthenticationConverter());
|
||||||
authenticationFilter.setServerAuthenticationSuccessHandler(new RedirectServerAuthenticationSuccessHandler("/"));
|
authenticationFilter.setServerAuthenticationSuccessHandler(new RedirectServerAuthenticationSuccessHandler("/"));
|
||||||
authenticationFilter.setSecurityContextServerRepository(this.securityContextServerRepository);
|
authenticationFilter.setSecurityContextServerRepository(this.securityContextServerRepository);
|
||||||
|
@ -49,7 +49,7 @@ public class AuthenticationWebFilter implements WebFilter {
|
|||||||
|
|
||||||
private Function<ServerWebExchange,Mono<Authentication>> authenticationConverter = new ServerHttpBasicAuthenticationConverter();
|
private Function<ServerWebExchange,Mono<Authentication>> authenticationConverter = new ServerHttpBasicAuthenticationConverter();
|
||||||
|
|
||||||
private AuthenticationFailureHandler authenticationFailureHandler = new AuthenticationEntryPointFailureHandler(new HttpBasicServerAuthenticationEntryPoint());
|
private ServerAuthenticationFailureHandler serverAuthenticationFailureHandler = new ServerAuthenticationEntryPointFailureHandler(new HttpBasicServerAuthenticationEntryPoint());
|
||||||
|
|
||||||
private SecurityContextServerRepository securityContextServerRepository = new ServerWebExchangeAttributeSecurityContextServerRepository();
|
private SecurityContextServerRepository securityContextServerRepository = new ServerWebExchangeAttributeSecurityContextServerRepository();
|
||||||
|
|
||||||
@ -79,7 +79,8 @@ public class AuthenticationWebFilter implements WebFilter {
|
|||||||
WebFilterExchange webFilterExchange = new WebFilterExchange(wrappedExchange, chain);
|
WebFilterExchange webFilterExchange = new WebFilterExchange(wrappedExchange, chain);
|
||||||
return this.authenticationManager.authenticate(token)
|
return this.authenticationManager.authenticate(token)
|
||||||
.flatMap(authentication -> onAuthenticationSuccess(authentication, webFilterExchange))
|
.flatMap(authentication -> onAuthenticationSuccess(authentication, webFilterExchange))
|
||||||
.onErrorResume(AuthenticationException.class, e -> this.authenticationFailureHandler.onAuthenticationFailure(webFilterExchange, e));
|
.onErrorResume(AuthenticationException.class, e -> this.serverAuthenticationFailureHandler
|
||||||
|
.onAuthenticationFailure(webFilterExchange, e));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Mono<Void> onAuthenticationSuccess(Authentication authentication, WebFilterExchange webFilterExchange) {
|
private Mono<Void> onAuthenticationSuccess(Authentication authentication, WebFilterExchange webFilterExchange) {
|
||||||
@ -105,10 +106,10 @@ public class AuthenticationWebFilter implements WebFilter {
|
|||||||
this.authenticationConverter = authenticationConverter;
|
this.authenticationConverter = authenticationConverter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAuthenticationFailureHandler(
|
public void setServerAuthenticationFailureHandler(
|
||||||
AuthenticationFailureHandler authenticationFailureHandler) {
|
ServerAuthenticationFailureHandler serverAuthenticationFailureHandler) {
|
||||||
Assert.notNull(authenticationFailureHandler, "authenticationFailureHandler cannot be null");
|
Assert.notNull(serverAuthenticationFailureHandler, "authenticationFailureHandler cannot be null");
|
||||||
this.authenticationFailureHandler = authenticationFailureHandler;
|
this.serverAuthenticationFailureHandler = serverAuthenticationFailureHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRequiresAuthenticationMatcher(
|
public void setRequiresAuthenticationMatcher(
|
||||||
|
@ -26,10 +26,11 @@ import reactor.core.publisher.Mono;
|
|||||||
* @author Rob Winch
|
* @author Rob Winch
|
||||||
* @since 5.0
|
* @since 5.0
|
||||||
*/
|
*/
|
||||||
public class AuthenticationEntryPointFailureHandler implements AuthenticationFailureHandler {
|
public class ServerAuthenticationEntryPointFailureHandler
|
||||||
|
implements ServerAuthenticationFailureHandler {
|
||||||
private final ServerAuthenticationEntryPoint serverAuthenticationEntryPoint;
|
private final ServerAuthenticationEntryPoint serverAuthenticationEntryPoint;
|
||||||
|
|
||||||
public AuthenticationEntryPointFailureHandler(
|
public ServerAuthenticationEntryPointFailureHandler(
|
||||||
ServerAuthenticationEntryPoint serverAuthenticationEntryPoint) {
|
ServerAuthenticationEntryPoint serverAuthenticationEntryPoint) {
|
||||||
Assert.notNull(serverAuthenticationEntryPoint, "authenticationEntryPoint cannot be null");
|
Assert.notNull(serverAuthenticationEntryPoint, "authenticationEntryPoint cannot be null");
|
||||||
this.serverAuthenticationEntryPoint = serverAuthenticationEntryPoint;
|
this.serverAuthenticationEntryPoint = serverAuthenticationEntryPoint;
|
@ -26,6 +26,6 @@ import org.springframework.security.web.server.WebFilterExchange;
|
|||||||
* @author Rob Winch
|
* @author Rob Winch
|
||||||
* @since 5.0
|
* @since 5.0
|
||||||
*/
|
*/
|
||||||
public interface AuthenticationFailureHandler {
|
public interface ServerAuthenticationFailureHandler {
|
||||||
Mono<Void> onAuthenticationFailure(WebFilterExchange webFilterExchange, AuthenticationException exception);
|
Mono<Void> onAuthenticationFailure(WebFilterExchange webFilterExchange, AuthenticationException exception);
|
||||||
}
|
}
|
@ -60,7 +60,7 @@ public class AuthenticationWebFilterTests {
|
|||||||
@Mock
|
@Mock
|
||||||
private ReactiveAuthenticationManager authenticationManager;
|
private ReactiveAuthenticationManager authenticationManager;
|
||||||
@Mock
|
@Mock
|
||||||
private AuthenticationFailureHandler failureHandler;
|
private ServerAuthenticationFailureHandler failureHandler;
|
||||||
@Mock
|
@Mock
|
||||||
private SecurityContextServerRepository securityContextServerRepository;
|
private SecurityContextServerRepository securityContextServerRepository;
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ public class AuthenticationWebFilterTests {
|
|||||||
this.filter.setServerAuthenticationSuccessHandler(this.successHandler);
|
this.filter.setServerAuthenticationSuccessHandler(this.successHandler);
|
||||||
this.filter.setAuthenticationConverter(this.authenticationConverter);
|
this.filter.setAuthenticationConverter(this.authenticationConverter);
|
||||||
this.filter.setSecurityContextServerRepository(this.securityContextServerRepository);
|
this.filter.setSecurityContextServerRepository(this.securityContextServerRepository);
|
||||||
this.filter.setAuthenticationFailureHandler(this.failureHandler);
|
this.filter.setServerAuthenticationFailureHandler(this.failureHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -49,12 +49,12 @@ public class ServerAuthenticationEntryPointFailureHandlerTests {
|
|||||||
private WebFilterExchange filterExchange;
|
private WebFilterExchange filterExchange;
|
||||||
|
|
||||||
@InjectMocks
|
@InjectMocks
|
||||||
private AuthenticationEntryPointFailureHandler handler;
|
private ServerAuthenticationEntryPointFailureHandler handler;
|
||||||
|
|
||||||
@Test(expected = IllegalArgumentException.class)
|
@Test(expected = IllegalArgumentException.class)
|
||||||
public void constructorWhenNullEntryPointThenException() {
|
public void constructorWhenNullEntryPointThenException() {
|
||||||
this.serverAuthenticationEntryPoint = null;
|
this.serverAuthenticationEntryPoint = null;
|
||||||
new AuthenticationEntryPointFailureHandler(this.serverAuthenticationEntryPoint);
|
new ServerAuthenticationEntryPointFailureHandler(this.serverAuthenticationEntryPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
x
Reference in New Issue
Block a user