Skip to content

Commit 7b79029

Browse files
committed
Expose property to configure OAuth2 provider configurationMetadata
Closes gh-21375
1 parent 6b8d08a commit 7b79029

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientProperties.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.autoconfigure.security.oauth2.client;
1818

1919
import java.util.HashMap;
20+
import java.util.LinkedHashMap;
2021
import java.util.Map;
2122
import java.util.Set;
2223

@@ -219,6 +220,11 @@ public static class Provider {
219220
*/
220221
private String issuerUri;
221222

223+
/**
224+
* Additional metadata describing the provider's configuration.
225+
*/
226+
private Map<String, Object> configurationMetadata = new LinkedHashMap<>();
227+
222228
public String getAuthorizationUri() {
223229
return this.authorizationUri;
224230
}
@@ -275,6 +281,10 @@ public void setIssuerUri(String issuerUri) {
275281
this.issuerUri = issuerUri;
276282
}
277283

284+
public Map<String, Object> getConfigurationMetadata() {
285+
return this.configurationMetadata;
286+
}
287+
278288
}
279289

280290
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientPropertiesRegistrationAdapter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ private static Builder getBuilder(Builder builder, Provider provider) {
116116
.to(builder::userInfoAuthenticationMethod);
117117
map.from(provider::getJwkSetUri).to(builder::jwkSetUri);
118118
map.from(provider::getUserNameAttribute).to(builder::userNameAttributeName);
119+
map.from(provider::getConfigurationMetadata).to(builder::providerConfigurationMetadata);
119120
return builder;
120121
}
121122

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientPropertiesRegistrationAdapterTests.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,20 @@ void issuerUriConfigurationTriesOAuthMetadataUriThird() throws Exception {
238238
testIssuerConfiguration(login, "okta", 2, 3);
239239
}
240240

241+
@Test
242+
void configurationMetadataFromProviderIsAdapted() {
243+
Provider provider = createProvider();
244+
provider.getConfigurationMetadata().put("end_session_endpoint", "https://myendsessionendpoint");
245+
OAuth2ClientProperties.Registration registration = createRegistration("my-oauth-provider");
246+
OAuth2ClientProperties properties = new OAuth2ClientProperties();
247+
properties.getRegistration().put("registration", registration);
248+
properties.getProvider().put("my-oauth-provider", provider);
249+
Map<String, ClientRegistration> registrations = OAuth2ClientPropertiesRegistrationAdapter
250+
.getClientRegistrations(properties);
251+
assertThat(registrations.get("registration").getProviderDetails().getConfigurationMetadata()
252+
.get("end_session_endpoint")).isEqualTo("https://myendsessionendpoint");
253+
}
254+
241255
@Test
242256
void oidcProviderConfigurationWithCustomConfigurationOverridesProviderDefaults() throws Exception {
243257
this.server = new MockWebServer();

spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3219,6 +3219,7 @@ You can register multiple OAuth2 clients and providers under the `spring.securit
32193219
spring.security.oauth2.client.provider.my-oauth-provider.user-info-authentication-method=header
32203220
spring.security.oauth2.client.provider.my-oauth-provider.jwk-set-uri=https://my-auth-server/token_keys
32213221
spring.security.oauth2.client.provider.my-oauth-provider.user-name-attribute=name
3222+
spring.security.oauth2.client.provider.my-oauth-provider.configuration-metadata.end_session_endpoint=https://my-end-session-endpoint
32223223
----
32233224

32243225
For OpenID Connect providers that support https://openid.net/specs/openid-connect-discovery-1_0.html[OpenID Connect discovery], the configuration can be further simplified.

0 commit comments

Comments
 (0)