Fail at startup if a configured OAuth2 client ID is not valid.

This commit is contained in:
Scott Frederick
2019-03-15 15:21:53 -05:00
parent 7c49eed010
commit e7cee758c5
3 changed files with 29 additions and 4 deletions

View File

@@ -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()

View File

@@ -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();
}

View File

@@ -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