diff --git a/spring-credhub-core/src/main/java/org/springframework/credhub/core/CredHubRestTemplateFactory.java b/spring-credhub-core/src/main/java/org/springframework/credhub/core/CredHubRestTemplateFactory.java index ab8cbfb..994fecf 100644 --- a/spring-credhub-core/src/main/java/org/springframework/credhub/core/CredHubRestTemplateFactory.java +++ b/spring-credhub-core/src/main/java/org/springframework/credhub/core/CredHubRestTemplateFactory.java @@ -130,6 +130,11 @@ class CredHubRestTemplateFactory { OAuth2AuthorizedClientService authorizedClientService) { ClientRegistration clientRegistration = clientRegistrationRepository.findByRegistrationId(clientId); + if (clientRegistration == null) { + throw new IllegalStateException("The CredHub OAuth2 client registration ID '" + clientId + + "' is not a valid Spring Security OAuth2 client registration"); + } + RestOperations tokenServerRestTemplate = createTokenServerRestTemplate(clientHttpRequestFactory); restTemplate.getInterceptors() diff --git a/spring-credhub-core/src/main/java/org/springframework/credhub/core/CredHubWebClientFactory.java b/spring-credhub-core/src/main/java/org/springframework/credhub/core/CredHubWebClientFactory.java index fc8c59c..a324022 100644 --- a/spring-credhub-core/src/main/java/org/springframework/credhub/core/CredHubWebClientFactory.java +++ b/spring-credhub-core/src/main/java/org/springframework/credhub/core/CredHubWebClientFactory.java @@ -31,8 +31,6 @@ import org.springframework.security.oauth2.client.web.server.ServerOAuth2Authori import org.springframework.web.reactive.function.client.ExchangeStrategies; import org.springframework.web.reactive.function.client.WebClient; -import static org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction.clientRegistrationId; - /** * Factory for creating a {@link WebClient} configured for communication with * a CredHub server. @@ -82,7 +80,9 @@ class CredHubWebClientFactory { return buildWebClient(properties.getUrl(), clientHttpConnector) .filter(oauth) .defaultRequest(requestHeadersSpec -> - requestHeadersSpec.attributes(clientRegistrationId(properties.getOauth2().getRegistrationId()))) + requestHeadersSpec.attributes( + ServerOAuth2AuthorizedClientExchangeFilterFunction + .clientRegistrationId(properties.getOauth2().getRegistrationId()))) .build(); } diff --git a/spring-credhub-starter/src/test/java/org/springframework/credhub/autoconfig/CredHubTemplateAutoConfigurationTests.java b/spring-credhub-starter/src/test/java/org/springframework/credhub/autoconfig/CredHubTemplateAutoConfigurationTests.java index 9257eff..f1bd98f 100644 --- a/spring-credhub-starter/src/test/java/org/springframework/credhub/autoconfig/CredHubTemplateAutoConfigurationTests.java +++ b/spring-credhub-starter/src/test/java/org/springframework/credhub/autoconfig/CredHubTemplateAutoConfigurationTests.java @@ -101,6 +101,24 @@ public class CredHubTemplateAutoConfigurationTests { }); } + @Test + public void credHubTemplatesNotConfiguredWithInvalidClientRegistration() { + context + .withPropertyValues( + "spring.credhub.url=https://localhost", + "spring.credhub.oauth2.registration-id=invalid-credhub-client", + + "spring.security.oauth2.client.registration.credhub-client.provider=uaa", + "spring.security.oauth2.client.registration.credhub-client.client-id=test-client", + "spring.security.oauth2.client.registration.credhub-client.client-secret=test-secret", + "spring.security.oauth2.client.registration.credhub-client.authorization-grant-type=client_credentials", + "spring.security.oauth2.client.provider.uaa.token-uri=http://example.com/uaa/oauth/token" + ) + .run(context -> assertThat(context) + .getFailure() + .hasMessageContaining("The CredHub OAuth2 client registration ID 'invalid-credhub-client' is not a valid")); + } + @Test public void credHubTemplatesNotConfiguredWithMissingClientRegistration() { context @@ -108,7 +126,9 @@ public class CredHubTemplateAutoConfigurationTests { "spring.credhub.url=https://localhost", "spring.credhub.oauth2.registration-id=credhub-client" ) - .run(context -> assertThat(context).hasFailed()); + .run(context -> assertThat(context) + .getFailure() + .hasMessageContaining("A CredHub OAuth2 client registration is configured but")); } @Test