Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
a28072ba
Commit
a28072ba
authored
May 19, 2021
by
Madhura Bhave
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '2.4.x' into main
Closes gh-26614
parents
99ed2911
27fee5fa
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
71 additions
and
4 deletions
+71
-4
ReactiveManagementWebSecurityAutoConfiguration.java
...ctive/ReactiveManagementWebSecurityAutoConfiguration.java
+6
-1
ReactiveManagementWebSecurityAutoConfigurationTests.java
.../ReactiveManagementWebSecurityAutoConfigurationTests.java
+4
-3
CorsSampleActuatorApplicationTests.java
...st/secure/webflux/CorsSampleActuatorApplicationTests.java
+59
-0
application-cors.properties
...re-webflux/src/test/resources/application-cors.properties
+2
-0
No files found.
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/security/reactive/ReactiveManagementWebSecurityAutoConfiguration.java
View file @
a28072ba
...
...
@@ -33,9 +33,12 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.security.config.Customizer
;
import
org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity
;
import
org.springframework.security.config.web.server.SecurityWebFiltersOrder
;
import
org.springframework.security.config.web.server.ServerHttpSecurity
;
import
org.springframework.security.web.server.SecurityWebFilterChain
;
import
org.springframework.security.web.server.WebFilterChainProxy
;
import
org.springframework.web.cors.reactive.PreFlightRequestHandler
;
import
org.springframework.web.cors.reactive.PreFlightRequestWebFilter
;
/**
* {@link EnableAutoConfiguration Auto-configuration} for Reactive Spring Security when
...
...
@@ -56,11 +59,13 @@ import org.springframework.security.web.server.WebFilterChainProxy;
public
class
ReactiveManagementWebSecurityAutoConfiguration
{
@Bean
public
SecurityWebFilterChain
springSecurityFilterChain
(
ServerHttpSecurity
http
)
throws
Exception
{
public
SecurityWebFilterChain
springSecurityFilterChain
(
ServerHttpSecurity
http
,
PreFlightRequestHandler
handler
)
{
http
.
authorizeExchange
((
exchanges
)
->
{
exchanges
.
matchers
(
EndpointRequest
.
to
(
HealthEndpoint
.
class
)).
permitAll
();
exchanges
.
anyExchange
().
authenticated
();
});
PreFlightRequestWebFilter
filter
=
new
PreFlightRequestWebFilter
(
handler
);
http
.
addFilterAt
(
filter
,
SecurityWebFiltersOrder
.
CORS
);
http
.
httpBasic
(
Customizer
.
withDefaults
());
http
.
formLogin
(
Customizer
.
withDefaults
());
return
http
.
build
();
...
...
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/security/reactive/ReactiveManagementWebSecurityAutoConfigurationTests.java
View file @
a28072ba
...
...
@@ -34,6 +34,7 @@ import org.springframework.boot.autoconfigure.AutoConfigurations;
import
org.springframework.boot.autoconfigure.security.oauth2.resource.reactive.ReactiveOAuth2ResourceServerAutoConfiguration
;
import
org.springframework.boot.autoconfigure.security.reactive.ReactiveSecurityAutoConfiguration
;
import
org.springframework.boot.autoconfigure.security.reactive.ReactiveUserDetailsServiceAutoConfiguration
;
import
org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration
;
import
org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext
;
import
org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner
;
import
org.springframework.context.ApplicationContext
;
...
...
@@ -67,9 +68,9 @@ class ReactiveManagementWebSecurityAutoConfigurationTests {
private
final
ReactiveWebApplicationContextRunner
contextRunner
=
new
ReactiveWebApplicationContextRunner
()
.
withConfiguration
(
AutoConfigurations
.
of
(
HealthContributorAutoConfiguration
.
class
,
HealthEndpointAutoConfiguration
.
class
,
InfoEndpointAutoConfiguration
.
class
,
EnvironmentEndpointAutoConfiguration
.
class
,
EndpointAutoConfiguration
.
class
,
WebEndpointAutoConfiguration
.
class
,
ReactiveSecurity
AutoConfiguration
.
class
,
ReactiveUserDetailsServiceAutoConfiguration
.
class
,
WebFluxAutoConfiguration
.
class
,
Environment
EndpointAutoConfiguration
.
class
,
EndpointAutoConfiguration
.
class
,
WebEndpoint
AutoConfiguration
.
class
,
Reactive
SecurityAutoConfiguration
.
class
,
Reactive
UserDetailsServiceAutoConfiguration
.
class
,
ReactiveManagementWebSecurityAutoConfiguration
.
class
));
@Test
...
...
spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-secure-webflux/src/test/java/smoketest/secure/webflux/CorsSampleActuatorApplicationTests.java
0 → 100644
View file @
a28072ba
/*
* Copyright 2012-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
smoketest
.
secure
.
webflux
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.test.context.ActiveProfiles
;
import
org.springframework.test.web.reactive.server.WebTestClient
;
/**
* Integration test for cors preflight requests to management endpoints.
*
* @author Madhura Bhave
*/
@SpringBootTest
(
webEnvironment
=
SpringBootTest
.
WebEnvironment
.
RANDOM_PORT
)
@ActiveProfiles
(
"cors"
)
class
CorsSampleActuatorApplicationTests
{
@Autowired
private
WebTestClient
webClient
;
@Autowired
private
ApplicationContext
applicationContext
;
@Test
void
endpointShouldReturnUnauthorized
()
{
this
.
webClient
.
get
().
uri
(
"/actuator/env"
).
exchange
().
expectStatus
().
isUnauthorized
();
}
@Test
void
preflightRequestToEndpointShouldReturnOk
()
throws
Exception
{
this
.
webClient
.
options
().
uri
(
"/actuator/env"
).
header
(
"Origin"
,
"http://localhost:8080"
)
.
header
(
"Access-Control-Request-Method"
,
"GET"
).
exchange
().
expectStatus
().
isOk
();
}
@Test
void
preflightRequestWhenCorsConfigInvalidShouldReturnForbidden
()
throws
Exception
{
this
.
webClient
.
options
().
uri
(
"/actuator/env"
).
header
(
"Origin"
,
"http://localhost:9095"
)
.
header
(
"Access-Control-Request-Method"
,
"GET"
).
exchange
().
expectStatus
().
isForbidden
();
}
}
spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-secure-webflux/src/test/resources/application-cors.properties
0 → 100644
View file @
a28072ba
management.endpoints.web.cors.allowed-origins
=
http://localhost:8080
management.endpoints.web.cors.allowed-methods
=
GET
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment