Formatting

pull/12008/merge
Phillip Webb 7 years ago
parent 3880bdb908
commit 3bec55e16c

@ -44,26 +44,26 @@ public class CloudFoundryReactiveHealthEndpointWebExtensionTests {
private ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner() private ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner()
.withPropertyValues("VCAP_APPLICATION={}") .withPropertyValues("VCAP_APPLICATION={}")
.withConfiguration( .withConfiguration(AutoConfigurations.of(
AutoConfigurations.of(ReactiveSecurityAutoConfiguration.class, ReactiveSecurityAutoConfiguration.class,
ReactiveUserDetailsServiceAutoConfiguration.class, ReactiveUserDetailsServiceAutoConfiguration.class,
WebFluxAutoConfiguration.class, JacksonAutoConfiguration.class, WebFluxAutoConfiguration.class, JacksonAutoConfiguration.class,
HttpMessageConvertersAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
PropertyPlaceholderAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class,
ReactiveCloudFoundryActuatorAutoConfigurationTests.WebClientCustomizerConfig.class, ReactiveCloudFoundryActuatorAutoConfigurationTests.WebClientCustomizerConfig.class,
WebClientAutoConfiguration.class, ManagementContextAutoConfiguration.class, WebClientAutoConfiguration.class,
ManagementContextAutoConfiguration.class,
EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class, EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
HealthIndicatorAutoConfiguration.class, HealthEndpointAutoConfiguration.class, HealthIndicatorAutoConfiguration.class,
HealthEndpointAutoConfiguration.class,
ReactiveCloudFoundryActuatorAutoConfiguration.class)); ReactiveCloudFoundryActuatorAutoConfiguration.class));
@Test @Test
public void healthDetailsAlwaysPresent() { public void healthDetailsAlwaysPresent() {
this.contextRunner this.contextRunner.run((context) -> {
.run((context) -> {
CloudFoundryReactiveHealthEndpointWebExtension extension = context CloudFoundryReactiveHealthEndpointWebExtension extension = context
.getBean(CloudFoundryReactiveHealthEndpointWebExtension.class); .getBean(CloudFoundryReactiveHealthEndpointWebExtension.class);
assertThat(extension.health().block().getBody().getDetails()) assertThat(extension.health().block().getBody().getDetails()).isNotEmpty();
.isNotEmpty();
}); });
} }

@ -45,8 +45,7 @@ public class CloudFoundryHealthEndpointWebExtensionTests {
private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner() private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
.withPropertyValues("VCAP_APPLICATION={}") .withPropertyValues("VCAP_APPLICATION={}")
.withConfiguration( .withConfiguration(AutoConfigurations.of(SecurityAutoConfiguration.class,
AutoConfigurations.of(SecurityAutoConfiguration.class,
WebMvcAutoConfiguration.class, JacksonAutoConfiguration.class, WebMvcAutoConfiguration.class, JacksonAutoConfiguration.class,
DispatcherServletAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
HttpMessageConvertersAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
@ -61,12 +60,10 @@ public class CloudFoundryHealthEndpointWebExtensionTests {
@Test @Test
public void healthDetailsAlwaysPresent() { public void healthDetailsAlwaysPresent() {
this.contextRunner this.contextRunner.run((context) -> {
.run((context) -> {
CloudFoundryHealthEndpointWebExtension extension = context CloudFoundryHealthEndpointWebExtension extension = context
.getBean(CloudFoundryHealthEndpointWebExtension.class); .getBean(CloudFoundryHealthEndpointWebExtension.class);
assertThat(extension.getHealth().getBody() assertThat(extension.getHealth().getBody().getDetails()).isNotEmpty();
.getDetails()).isNotEmpty();
}); });
} }

@ -60,8 +60,7 @@ public class HealthEndpointWebExtension {
Health health = this.delegate.health(); Health health = this.delegate.health();
Integer status = this.statusHttpMapper.mapStatus(health.getStatus()); Integer status = this.statusHttpMapper.mapStatus(health.getStatus());
if (showDetails == ShowDetails.NEVER if (showDetails == ShowDetails.NEVER
|| (showDetails == ShowDetails.WHEN_AUTHENTICATED || (showDetails == ShowDetails.WHEN_AUTHENTICATED && principal == null)) {
&& principal == null)) {
health = Health.status(health.getStatus()).build(); health = Health.status(health.getStatus()).build();
} }
return new WebEndpointResponse<>(health, status); return new WebEndpointResponse<>(health, status);

@ -3023,21 +3023,23 @@ commonly used locations.
[[boot-features-security-webflux]] [[boot-features-security-webflux]]
=== WebFlux Security === WebFlux Security
Similar to Spring MVC applications, you can secure your WebFlux applications by adding the `spring-boot-starter-security` dependency. Similar to Spring MVC applications, you can secure your WebFlux applications by adding
The default security configuration is implemented in `ReactiveSecurityAutoConfiguration` and in the `spring-boot-starter-security` dependency. The default security configuration is
the classes imported from there (`WebFluxSecurityConfiguration` for web security implemented in `ReactiveSecurityAutoConfiguration` and in the classes imported from there
and `ReactiveAuthenticationManagerConfiguration` for authentication configuration, which is also (`WebFluxSecurityConfiguration` for web security and
relevant in non-web applications). To switch off the default web application security `ReactiveAuthenticationManagerConfiguration` for authentication configuration, which is
configuration completely, you can add a bean of type `WebFilterChainProxy` (doing also relevant in non-web applications). To switch off the default web application security
so does not disable the authentication manager configuration or Actuator's security). configuration completely, you can add a bean of type `WebFilterChainProxy` (doing so does
not disable the authentication manager configuration or Actuator's security).
To also switch off the authentication manager configuration, you can add a bean of type To also switch off the authentication manager configuration, you can add a bean of type
`ReactiveUserDetailsService` or `ReactiveAuthenticationManager`. `ReactiveUserDetailsService` or `ReactiveAuthenticationManager`.
Access rules can be configured by adding a custom `SecurityWebFilterChain`. Spring Access rules can be configured by adding a custom `SecurityWebFilterChain`. Spring
Boot provides convenience methods that can be used to override access rules for actuator Boot provides convenience methods that can be used to override access rules for actuator
endpoints and static resources. `EndpointRequest` can be used to create a `ServerWebExchangeMatcher` endpoints and static resources. `EndpointRequest` can be used to create a
that is based on the `management.endpoints.web.base-path` property. `ServerWebExchangeMatcher` that is based on the `management.endpoints.web.base-path`
property.
`PathRequest` can be used to create a `ServerWebExchangeMatcher` for resources in `PathRequest` can be used to create a `ServerWebExchangeMatcher` for resources in
commonly used locations. commonly used locations.
@ -3046,10 +3048,11 @@ For example, you can customize your security configuration by adding something l
[source,java,indent=0] [source,java,indent=0]
---- ----
include::{code-examples}/web/security/CustomWebFluxSecurityExample.java[tag=custom-webflux-security] include::{code-examples}/web/security/CustomWebFluxSecurityExample.java[tag=configuration]
---- ----
[[boot-features-security-oauth2]] [[boot-features-security-oauth2]]
=== OAuth2 === OAuth2
https://oauth.net/2/[OAuth2] is a widely used authorization framework that is supported by https://oauth.net/2/[OAuth2] is a widely used authorization framework that is supported by

@ -30,6 +30,8 @@ import org.springframework.security.web.server.SecurityWebFilterChain;
@EnableWebFluxSecurity @EnableWebFluxSecurity
public class CustomWebFluxSecurityExample { public class CustomWebFluxSecurityExample {
// @formatter:off
// tag::configuration[]
@Bean @Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) { public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
http http
@ -40,6 +42,7 @@ public class CustomWebFluxSecurityExample {
.formLogin(); .formLogin();
return http.build(); return http.build();
} }
// end::configuration[]
// @formatter:on
} }

Loading…
Cancel
Save