diff --git a/spring-reactive-modules/spring-reactive-oauth/pom.xml b/spring-reactive-modules/spring-reactive-oauth/pom.xml
index 9d2dbf6126..d4699acd6d 100644
--- a/spring-reactive-modules/spring-reactive-oauth/pom.xml
+++ b/spring-reactive-modules/spring-reactive-oauth/pom.xml
@@ -11,9 +11,10 @@
WebFlux and Spring Security OAuth
- com.baeldung.spring.reactive
- spring-reactive-modules
- 1.0.0-SNAPSHOT
+ com.baeldung
+ parent-boot-3
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-3
@@ -62,4 +63,8 @@
+
+ com.baeldung.reactive.oauth.Spring5ReactiveOauthApplication
+
+
\ No newline at end of file
diff --git a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/reactive/oauth/SecurityConfig.java b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/reactive/oauth/SecurityConfig.java
index 2fa1dd9380..c2069d3cdb 100644
--- a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/reactive/oauth/SecurityConfig.java
+++ b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/reactive/oauth/SecurityConfig.java
@@ -1,6 +1,7 @@
package com.baeldung.reactive.oauth;
import org.springframework.context.annotation.Bean;
+import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
import org.springframework.security.config.web.server.ServerHttpSecurity;
import org.springframework.security.web.server.SecurityWebFilterChain;
@@ -10,10 +11,11 @@ public class SecurityConfig {
@Bean
public SecurityWebFilterChain configure(ServerHttpSecurity http) throws Exception {
- return http.authorizeExchange()
+ return http.authorizeExchange(auth -> auth
.pathMatchers("/about").permitAll()
- .anyExchange().authenticated()
- .and().oauth2Login()
- .and().build();
+ .anyExchange().authenticated())
+ .oauth2Login(Customizer.withDefaults())
+ .build();
}
+
}
diff --git a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/reactive/oauth/Spring5ReactiveOauthApplication.java b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/reactive/oauth/Spring5ReactiveOauthApplication.java
index b95517200e..7fe82404be 100644
--- a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/reactive/oauth/Spring5ReactiveOauthApplication.java
+++ b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/reactive/oauth/Spring5ReactiveOauthApplication.java
@@ -4,9 +4,12 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;
+import org.springframework.security.oauth2.client.registration.ClientRegistration;
+import org.springframework.security.oauth2.client.registration.InMemoryReactiveClientRegistrationRepository;
import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction;
import org.springframework.security.oauth2.client.web.server.ServerOAuth2AuthorizedClientRepository;
+import org.springframework.security.oauth2.core.AuthorizationGrantType;
import org.springframework.web.reactive.function.client.WebClient;
@PropertySource("classpath:default-application.yml")
@@ -24,4 +27,13 @@ public class Spring5ReactiveOauthApplication {
.filter(filter)
.build();
}
+
+ @Bean
+ public ReactiveClientRegistrationRepository clientRegistrations() {
+ ClientRegistration registration = ClientRegistration.withRegistrationId("bael").authorizationGrantType(
+ AuthorizationGrantType.CLIENT_CREDENTIALS).clientId("bael").tokenUri("default").build();
+
+ return new InMemoryReactiveClientRegistrationRepository(registration);
+
+ }
}
diff --git a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/authorizationcodeclient/configuration/WebSecurityConfig.java b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/authorizationcodeclient/configuration/WebSecurityConfig.java
index 4271ae96cf..325c322a73 100644
--- a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/authorizationcodeclient/configuration/WebSecurityConfig.java
+++ b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/authorizationcodeclient/configuration/WebSecurityConfig.java
@@ -2,6 +2,7 @@ package com.baeldung.webclient.authorizationcodeclient.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.Customizer;
import org.springframework.security.config.web.server.ServerHttpSecurity;
import org.springframework.security.web.server.SecurityWebFilterChain;
@@ -9,13 +10,9 @@ import org.springframework.security.web.server.SecurityWebFilterChain;
public class WebSecurityConfig {
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
- http.authorizeExchange()
- .anyExchange()
- .authenticated()
- .and()
- .oauth2Client()
- .and()
- .formLogin();
+ http.authorizeExchange(s-> s.anyExchange().authenticated())
+ .oauth2Client(Customizer.withDefaults())
+ .formLogin(Customizer.withDefaults());
return http.build();
}
diff --git a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/authorizationcodelogin/configuration/WebSecurityConfig.java b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/authorizationcodelogin/configuration/WebSecurityConfig.java
index f45fc09222..46e3828ec2 100644
--- a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/authorizationcodelogin/configuration/WebSecurityConfig.java
+++ b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/authorizationcodelogin/configuration/WebSecurityConfig.java
@@ -2,6 +2,7 @@ package com.baeldung.webclient.authorizationcodelogin.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.Customizer;
import org.springframework.security.config.web.server.ServerHttpSecurity;
import org.springframework.security.web.server.SecurityWebFilterChain;
@@ -9,11 +10,8 @@ import org.springframework.security.web.server.SecurityWebFilterChain;
public class WebSecurityConfig {
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
- http.authorizeExchange()
- .anyExchange()
- .authenticated()
- .and()
- .oauth2Login();
+ http.authorizeExchange(s-> s.anyExchange().authenticated())
+ .oauth2Login(Customizer.withDefaults());
return http.build();
}
diff --git a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/clientcredentials/configuration/WebClientConfig.java b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/clientcredentials/configuration/WebClientConfig.java
index 8ffc92b4cd..1bf9ddd5be 100644
--- a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/clientcredentials/configuration/WebClientConfig.java
+++ b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/clientcredentials/configuration/WebClientConfig.java
@@ -1,22 +1,60 @@
package com.baeldung.webclient.clientcredentials.configuration;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.security.oauth2.client.AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager;
+import org.springframework.security.oauth2.client.InMemoryReactiveOAuth2AuthorizedClientService;
+import org.springframework.security.oauth2.client.ReactiveOAuth2AuthorizedClientProvider;
+import org.springframework.security.oauth2.client.ReactiveOAuth2AuthorizedClientProviderBuilder;
+import org.springframework.security.oauth2.client.registration.ClientRegistration;
+import org.springframework.security.oauth2.client.registration.InMemoryReactiveClientRegistrationRepository;
import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction;
-import org.springframework.security.oauth2.client.web.server.UnAuthenticatedServerOAuth2AuthorizedClientRepository;
+import org.springframework.security.oauth2.core.AuthorizationGrantType;
import org.springframework.web.reactive.function.client.WebClient;
@Configuration
public class WebClientConfig {
@Bean
- WebClient webClient(ReactiveClientRegistrationRepository clientRegistrations) {
- ServerOAuth2AuthorizedClientExchangeFilterFunction oauth = new ServerOAuth2AuthorizedClientExchangeFilterFunction(clientRegistrations, new UnAuthenticatedServerOAuth2AuthorizedClientRepository());
- oauth.setDefaultClientRegistrationId("bael");
- return WebClient.builder()
- .filter(oauth)
+ ReactiveClientRegistrationRepository clientRegistrations(
+ @Value("${spring.security.oauth2.client.provider.bael.token-uri}") String token_uri,
+ @Value("${spring.security.oauth2.client.registration.bael.client-id}") String client_id,
+ @Value("${spring.security.oauth2.client.registration.bael.client-secret}") String client_secret,
+ @Value("${spring.security.oauth2.client.registration.bael.authorization-grant-type}") String authorizationGrantType
+
+ ) {
+ ClientRegistration registration = ClientRegistration
+ .withRegistrationId("keycloak")
+ .tokenUri(token_uri)
+ .clientId(client_id)
+ .clientSecret(client_secret)
+ .authorizationGrantType(new AuthorizationGrantType(authorizationGrantType))
.build();
+ return new InMemoryReactiveClientRegistrationRepository(registration);
+ }
+ @Bean
+ public AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager authorizedClientManager(
+ ReactiveClientRegistrationRepository clientRegistrationRepository) {
+ InMemoryReactiveOAuth2AuthorizedClientService clientService =
+ new InMemoryReactiveOAuth2AuthorizedClientService(clientRegistrationRepository);
+ ReactiveOAuth2AuthorizedClientProvider authorizedClientProvider =
+ ReactiveOAuth2AuthorizedClientProviderBuilder.builder().clientCredentials().build();
+ AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager authorizedClientManager =
+ new AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager(
+ clientRegistrationRepository, clientService);
+ authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
+ return authorizedClientManager;
}
+ @Bean
+ WebClient webClient(AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager auth2AuthorizedClientManager) {
+ ServerOAuth2AuthorizedClientExchangeFilterFunction oauth2Client =
+ new ServerOAuth2AuthorizedClientExchangeFilterFunction(auth2AuthorizedClientManager);
+ oauth2Client.setDefaultClientRegistrationId("bael");
+ return WebClient.builder()
+ .filter(oauth2Client)
+ .build();
+ }
}
diff --git a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/manualrequest/configure/WebClientConfig.java b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/manualrequest/configure/WebClientConfig.java
index 51fc60821a..33493be61d 100644
--- a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/manualrequest/configure/WebClientConfig.java
+++ b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/manualrequest/configure/WebClientConfig.java
@@ -11,6 +11,6 @@ public class WebClientConfig {
public WebClient configureWebClient() {
return WebClient.builder()
.build();
- };
+ }
}
diff --git a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/manualrequest/configure/WebSecurityConfig.java b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/manualrequest/configure/WebSecurityConfig.java
index 1753681db8..0aa38d2a12 100644
--- a/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/manualrequest/configure/WebSecurityConfig.java
+++ b/spring-reactive-modules/spring-reactive-oauth/src/main/java/com/baeldung/webclient/manualrequest/configure/WebSecurityConfig.java
@@ -9,9 +9,7 @@ import org.springframework.security.web.server.SecurityWebFilterChain;
public class WebSecurityConfig {
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
- http.authorizeExchange()
- .anyExchange()
- .permitAll();
+ http.authorizeExchange(s -> s.anyExchange().permitAll());
return http.build();
}
}
diff --git a/spring-reactive-modules/spring-reactive-oauth/src/test/java/com/baeldung/reactive/oauth/Spring5ReactiveOauthIntegrationTest.java b/spring-reactive-modules/spring-reactive-oauth/src/test/java/com/baeldung/reactive/oauth/Spring5ReactiveOauthIntegrationTest.java
index db545d63de..fc2b540f4d 100644
--- a/spring-reactive-modules/spring-reactive-oauth/src/test/java/com/baeldung/reactive/oauth/Spring5ReactiveOauthIntegrationTest.java
+++ b/spring-reactive-modules/spring-reactive-oauth/src/test/java/com/baeldung/reactive/oauth/Spring5ReactiveOauthIntegrationTest.java
@@ -1,12 +1,13 @@
package com.baeldung.reactive.oauth;
+import com.baeldung.webclient.clientcredentials.configuration.WebClientConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
-@SpringBootTest
+@SpringBootTest(classes = WebClientConfig.class)
public class Spring5ReactiveOauthIntegrationTest {
@Test