Skip to content

Commit 415d12f

Browse files
committed
Make oauth2 client configuration optional
1 parent b8ab85f commit 415d12f

File tree

5 files changed

+38
-34
lines changed

5 files changed

+38
-34
lines changed

gradle.properties

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,3 @@ LIB_GRAPHQL_SPRING_VER = 7.0.0
2323
LIB_SPRING_BOOT_VER = 2.2.5.RELEASE
2424
LIB_BINTRAY_PLUGIN_VER = 1.8.4
2525
LIB_RELEASE_PLUGIN_VER = 2.8.1
26-
27-
BINTRAY_USER=oliemansm
28-
BINTRAY_PASS=870d6fae9685bc710d62745087c467c2113dc933

graphql-webclient-spring-boot-autoconfigure/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
dependencies {
22
api(project(':graphql-webclient'))
33

4+
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
5+
46
implementation "org.springframework.boot:spring-boot-autoconfigure"
57
implementation "org.springframework.boot:spring-boot-starter-webflux"
68
implementation "org.springframework.security:spring-security-oauth2-client"

graphql-webclient-spring-boot-autoconfigure/src/main/java/graphql/kickstart/spring/webclient/boot/OAuth2ClientRegistrationProperties.java

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static java.util.Optional.ofNullable;
44

5+
import java.util.Optional;
56
import java.util.Set;
67
import lombok.Data;
78
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -33,31 +34,34 @@ class OAuth2ClientRegistrationProperties {
3334
private String jwkSetUri;
3435
private String issuerUri;
3536

36-
ClientRegistration getClientRegistration() {
37-
ClientRegistration.Builder builder = ClientRegistration.withRegistrationId("graphql")
38-
.clientId(getClientId())
39-
.clientSecret(getClientSecret())
40-
.redirectUriTemplate(getRedirectUri())
41-
.scope(getScope())
42-
.clientName(getClientName())
43-
.authorizationUri(getAuthorizationUri())
44-
.tokenUri(getTokenUri())
45-
.userInfoUri(getUserInfoUri())
46-
.jwkSetUri(getJwkSetUri());
47-
48-
ofNullable(getClientAuthenticationMethod())
49-
.map(ClientAuthenticationMethod::new)
50-
.ifPresent(builder::clientAuthenticationMethod);
51-
52-
ofNullable(getAuthorizationGrantType())
53-
.map(AuthorizationGrantType::new)
54-
.ifPresent(builder::authorizationGrantType);
55-
56-
ofNullable(getUserInfoAuthenticationMethod())
57-
.map(AuthenticationMethod::new)
58-
.ifPresent(builder::userInfoAuthenticationMethod);
59-
60-
return builder.build();
37+
Optional<ClientRegistration> getClientRegistration() {
38+
if (clientId != null) {
39+
ClientRegistration.Builder builder = ClientRegistration.withRegistrationId("graphql")
40+
.clientId(getClientId())
41+
.clientSecret(getClientSecret())
42+
.redirectUriTemplate(getRedirectUri())
43+
.scope(getScope())
44+
.clientName(getClientName())
45+
.authorizationUri(getAuthorizationUri())
46+
.tokenUri(getTokenUri())
47+
.userInfoUri(getUserInfoUri())
48+
.jwkSetUri(getJwkSetUri());
49+
50+
ofNullable(getClientAuthenticationMethod())
51+
.map(ClientAuthenticationMethod::new)
52+
.ifPresent(builder::clientAuthenticationMethod);
53+
54+
ofNullable(getAuthorizationGrantType())
55+
.map(AuthorizationGrantType::new)
56+
.ifPresent(builder::authorizationGrantType);
57+
58+
ofNullable(getUserInfoAuthenticationMethod())
59+
.map(AuthenticationMethod::new)
60+
.ifPresent(builder::userInfoAuthenticationMethod);
61+
62+
return Optional.of(builder.build());
63+
}
64+
return Optional.empty();
6165
}
6266

6367
}

graphql-webclient-spring-boot-autoconfigure/src/main/java/graphql/kickstart/spring/webclient/boot/OAuth2ClientRegistrationRepositoryConfiguration.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
11
package graphql.kickstart.spring.webclient.boot;
22

3-
import static java.util.Collections.singletonList;
4-
3+
import java.util.Collections;
54
import java.util.List;
65
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
76
import org.springframework.boot.context.properties.EnableConfigurationProperties;
87
import org.springframework.context.annotation.Bean;
98
import org.springframework.context.annotation.Configuration;
109
import org.springframework.security.oauth2.client.registration.ClientRegistration;
11-
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
1210
import org.springframework.security.oauth2.client.registration.InMemoryReactiveClientRegistrationRepository;
11+
import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository;
1312

1413
@Configuration
1514
@EnableConfigurationProperties(OAuth2ClientRegistrationProperties.class)
1615
class OAuth2ClientRegistrationRepositoryConfiguration {
1716

1817
@Bean
19-
@ConditionalOnMissingBean({ClientRegistrationRepository.class})
18+
@ConditionalOnMissingBean({ReactiveClientRegistrationRepository.class})
2019
InMemoryReactiveClientRegistrationRepository clientRegistrationRepository(OAuth2ClientRegistrationProperties properties) {
21-
List<ClientRegistration> registrations = singletonList(properties.getClientRegistration());
20+
List<ClientRegistration> registrations = properties.getClientRegistration()
21+
.map(List::of)
22+
.orElseGet(Collections::emptyList);
2223
return new InMemoryReactiveClientRegistrationRepository(registrations);
2324
}
2425

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
22
graphql.kickstart.spring.webclient.boot.GraphQLWebClientAutoConfiguration,\
3-
graphql.kickstart.spring.webclient.boot.OAuth2ClientRegistrationProperties
3+
graphql.kickstart.spring.webclient.boot.OAuth2ClientRegistrationRepositoryConfiguration

0 commit comments

Comments
 (0)