Create properties despite used-defined ClientRegistrationRepository

Update `OAuth2ClientConfigurations` so that properties are created
regardless of a user-defined `ClientRegistrationRepository` bean.

Fixes gh-51447
This commit is contained in:
Phillip Webb
2026-08-25 12:41:23 -07:00
parent 64267798cb
commit 53c04499b4
2 changed files with 14 additions and 1 deletions
@@ -41,10 +41,10 @@ class OAuth2ClientConfigurations {
@Configuration(proxyBeanMethods = false)
@ConditionalOnOAuth2ClientRegistrationProperties
@EnableConfigurationProperties(OAuth2ClientProperties.class)
@ConditionalOnMissingBean(ClientRegistrationRepository.class)
static class ClientRegistrationRepositoryConfiguration {
@Bean
@ConditionalOnMissingBean(ClientRegistrationRepository.class)
InMemoryClientRegistrationRepository clientRegistrationRepository(OAuth2ClientProperties properties) {
List<ClientRegistration> registrations = new ArrayList<>(
new OAuth2ClientPropertiesMapper(properties).asClientRegistrations().values());
@@ -82,6 +82,19 @@ class OAuth2ClientAutoConfigurationTests {
.run((context) -> assertThat(context).hasSingleBean(OAuth2AuthorizedClientService.class));
}
@Test
void propertiesBeanIsCreatedWithUserDefinedClientRegistrationRepository() {
this.contextRunner
.withPropertyValues(REGISTRATION_PREFIX + ".foo.client-id=abcd",
REGISTRATION_PREFIX + ".foo.client-secret=secret", REGISTRATION_PREFIX + ".foo.provider=github")
.withBean(ClientRegistrationRepository.class,
() -> new InMemoryClientRegistrationRepository(getClientRegistration("test", "test")))
.run((context) -> {
assertThat(context).hasSingleBean(OAuth2ClientProperties.class);
assertThat(context).hasSingleBean(OAuth2AuthorizedClientService.class);
});
}
private ClientRegistration getClientRegistration(String id, String userInfoUri) {
ClientRegistration.Builder builder = ClientRegistration.withRegistrationId(id);
builder.clientName("foo")