Merge branch '5.8.x'
Closes gh-12133
This commit is contained in:
@@ -2023,6 +2023,8 @@ public class ServerHttpSecurity {
|
||||
|
||||
private ServerAuthenticationEntryPoint entryPoint;
|
||||
|
||||
private ServerAuthenticationFailureHandler authenticationFailureHandler;
|
||||
|
||||
private HttpBasicSpec() {
|
||||
List<DelegateEntry> entryPoints = new ArrayList<>();
|
||||
entryPoints
|
||||
@@ -2071,6 +2073,13 @@ public class ServerHttpSecurity {
|
||||
return this;
|
||||
}
|
||||
|
||||
public HttpBasicSpec authenticationFailureHandler(
|
||||
ServerAuthenticationFailureHandler authenticationFailureHandler) {
|
||||
Assert.notNull(authenticationFailureHandler, "authenticationFailureHandler cannot be null");
|
||||
this.authenticationFailureHandler = authenticationFailureHandler;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows method chaining to continue configuring the {@link ServerHttpSecurity}
|
||||
* @return the {@link ServerHttpSecurity} to continue configuring
|
||||
@@ -2102,13 +2111,19 @@ public class ServerHttpSecurity {
|
||||
Arrays.asList(this.xhrMatcher, restNotHtmlMatcher));
|
||||
ServerHttpSecurity.this.defaultEntryPoints.add(new DelegateEntry(preferredMatcher, this.entryPoint));
|
||||
AuthenticationWebFilter authenticationFilter = new AuthenticationWebFilter(this.authenticationManager);
|
||||
authenticationFilter
|
||||
.setAuthenticationFailureHandler(new ServerAuthenticationEntryPointFailureHandler(this.entryPoint));
|
||||
authenticationFilter.setAuthenticationFailureHandler(authenticationFailureHandler());
|
||||
authenticationFilter.setAuthenticationConverter(new ServerHttpBasicAuthenticationConverter());
|
||||
authenticationFilter.setSecurityContextRepository(this.securityContextRepository);
|
||||
http.addFilterAt(authenticationFilter, SecurityWebFiltersOrder.HTTP_BASIC);
|
||||
}
|
||||
|
||||
private ServerAuthenticationFailureHandler authenticationFailureHandler() {
|
||||
if (this.authenticationFailureHandler != null) {
|
||||
return this.authenticationFailureHandler;
|
||||
}
|
||||
return new ServerAuthenticationEntryPointFailureHandler(this.entryPoint);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3996,6 +4011,8 @@ public class ServerHttpSecurity {
|
||||
|
||||
private ServerAuthenticationEntryPoint entryPoint = new BearerTokenServerAuthenticationEntryPoint();
|
||||
|
||||
private ServerAuthenticationFailureHandler authenticationFailureHandler;
|
||||
|
||||
private ServerAccessDeniedHandler accessDeniedHandler = new BearerTokenServerAccessDeniedHandler();
|
||||
|
||||
private ServerAuthenticationConverter bearerTokenConverter = new ServerBearerTokenAuthenticationConverter();
|
||||
@@ -4038,6 +4055,12 @@ public class ServerHttpSecurity {
|
||||
return this;
|
||||
}
|
||||
|
||||
public OAuth2ResourceServerSpec authenticationFailureHandler(
|
||||
ServerAuthenticationFailureHandler authenticationFailureHandler) {
|
||||
this.authenticationFailureHandler = authenticationFailureHandler;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the {@link ServerAuthenticationConverter} to use for requests
|
||||
* authenticating with
|
||||
@@ -4127,8 +4150,7 @@ public class ServerHttpSecurity {
|
||||
if (this.authenticationManagerResolver != null) {
|
||||
AuthenticationWebFilter oauth2 = new AuthenticationWebFilter(this.authenticationManagerResolver);
|
||||
oauth2.setServerAuthenticationConverter(this.bearerTokenConverter);
|
||||
oauth2.setAuthenticationFailureHandler(
|
||||
new ServerAuthenticationEntryPointFailureHandler(this.entryPoint));
|
||||
oauth2.setAuthenticationFailureHandler(authenticationFailureHandler());
|
||||
http.addFilterAt(oauth2, SecurityWebFiltersOrder.AUTHENTICATION);
|
||||
}
|
||||
else if (this.jwt != null) {
|
||||
@@ -4181,6 +4203,13 @@ public class ServerHttpSecurity {
|
||||
}
|
||||
}
|
||||
|
||||
private ServerAuthenticationFailureHandler authenticationFailureHandler() {
|
||||
if (this.authenticationFailureHandler != null) {
|
||||
return this.authenticationFailureHandler;
|
||||
}
|
||||
return new ServerAuthenticationEntryPointFailureHandler(this.entryPoint);
|
||||
}
|
||||
|
||||
public ServerHttpSecurity and() {
|
||||
return ServerHttpSecurity.this;
|
||||
}
|
||||
@@ -4262,8 +4291,7 @@ public class ServerHttpSecurity {
|
||||
ReactiveAuthenticationManager authenticationManager = getAuthenticationManager();
|
||||
AuthenticationWebFilter oauth2 = new AuthenticationWebFilter(authenticationManager);
|
||||
oauth2.setServerAuthenticationConverter(OAuth2ResourceServerSpec.this.bearerTokenConverter);
|
||||
oauth2.setAuthenticationFailureHandler(
|
||||
new ServerAuthenticationEntryPointFailureHandler(OAuth2ResourceServerSpec.this.entryPoint));
|
||||
oauth2.setAuthenticationFailureHandler(authenticationFailureHandler());
|
||||
http.addFilterAt(oauth2, SecurityWebFiltersOrder.AUTHENTICATION);
|
||||
}
|
||||
|
||||
@@ -4398,8 +4426,7 @@ public class ServerHttpSecurity {
|
||||
ReactiveAuthenticationManager authenticationManager = getAuthenticationManager();
|
||||
AuthenticationWebFilter oauth2 = new AuthenticationWebFilter(authenticationManager);
|
||||
oauth2.setServerAuthenticationConverter(OAuth2ResourceServerSpec.this.bearerTokenConverter);
|
||||
oauth2.setAuthenticationFailureHandler(
|
||||
new ServerAuthenticationEntryPointFailureHandler(OAuth2ResourceServerSpec.this.entryPoint));
|
||||
oauth2.setAuthenticationFailureHandler(authenticationFailureHandler());
|
||||
http.addFilterAt(oauth2, SecurityWebFiltersOrder.AUTHENTICATION);
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.springframework.security.core.Authentication
|
||||
import org.springframework.security.core.context.SecurityContext
|
||||
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter
|
||||
import org.springframework.security.web.server.ServerAuthenticationEntryPoint
|
||||
import org.springframework.security.web.server.authentication.ServerAuthenticationFailureHandler
|
||||
import org.springframework.security.web.server.context.ReactorContextWebFilter
|
||||
import org.springframework.security.web.server.context.ServerSecurityContextRepository
|
||||
|
||||
@@ -42,6 +43,7 @@ import org.springframework.security.web.server.context.ServerSecurityContextRepo
|
||||
class ServerHttpBasicDsl {
|
||||
var authenticationManager: ReactiveAuthenticationManager? = null
|
||||
var securityContextRepository: ServerSecurityContextRepository? = null
|
||||
var authenticationFailureHandler: ServerAuthenticationFailureHandler? = null
|
||||
var authenticationEntryPoint: ServerAuthenticationEntryPoint? = null
|
||||
|
||||
private var disabled = false
|
||||
@@ -57,6 +59,7 @@ class ServerHttpBasicDsl {
|
||||
return { httpBasic ->
|
||||
authenticationManager?.also { httpBasic.authenticationManager(authenticationManager) }
|
||||
securityContextRepository?.also { httpBasic.securityContextRepository(securityContextRepository) }
|
||||
authenticationFailureHandler?.also { httpBasic.authenticationFailureHandler(authenticationFailureHandler) }
|
||||
authenticationEntryPoint?.also { httpBasic.authenticationEntryPoint(authenticationEntryPoint) }
|
||||
if (disabled) {
|
||||
httpBasic.disable()
|
||||
|
||||
@@ -19,6 +19,7 @@ package org.springframework.security.config.web.server
|
||||
import org.springframework.security.authentication.ReactiveAuthenticationManagerResolver
|
||||
import org.springframework.security.web.server.ServerAuthenticationEntryPoint
|
||||
import org.springframework.security.web.server.authentication.ServerAuthenticationConverter
|
||||
import org.springframework.security.web.server.authentication.ServerAuthenticationFailureHandler
|
||||
import org.springframework.security.web.server.authorization.ServerAccessDeniedHandler
|
||||
import org.springframework.web.server.ServerWebExchange
|
||||
|
||||
@@ -38,6 +39,7 @@ import org.springframework.web.server.ServerWebExchange
|
||||
@ServerSecurityMarker
|
||||
class ServerOAuth2ResourceServerDsl {
|
||||
var accessDeniedHandler: ServerAccessDeniedHandler? = null
|
||||
var authenticationFailureHandler: ServerAuthenticationFailureHandler? = null
|
||||
var authenticationEntryPoint: ServerAuthenticationEntryPoint? = null
|
||||
var bearerTokenConverter: ServerAuthenticationConverter? = null
|
||||
var authenticationManagerResolver: ReactiveAuthenticationManagerResolver<ServerWebExchange>? = null
|
||||
@@ -109,6 +111,7 @@ class ServerOAuth2ResourceServerDsl {
|
||||
internal fun get(): (ServerHttpSecurity.OAuth2ResourceServerSpec) -> Unit {
|
||||
return { oauth2ResourceServer ->
|
||||
accessDeniedHandler?.also { oauth2ResourceServer.accessDeniedHandler(accessDeniedHandler) }
|
||||
authenticationFailureHandler?.also { oauth2ResourceServer.authenticationFailureHandler(authenticationFailureHandler) }
|
||||
authenticationEntryPoint?.also { oauth2ResourceServer.authenticationEntryPoint(authenticationEntryPoint) }
|
||||
bearerTokenConverter?.also { oauth2ResourceServer.bearerTokenConverter(bearerTokenConverter) }
|
||||
authenticationManagerResolver?.also { oauth2ResourceServer.authenticationManagerResolver(authenticationManagerResolver!!) }
|
||||
|
||||
Reference in New Issue
Block a user