diff --git a/server/src/main/java/org/cloudfoundry/identity/uaa/provider/oauth/OauthIDPWrapperFactoryBean.java b/server/src/main/java/org/cloudfoundry/identity/uaa/provider/oauth/OauthIDPWrapperFactoryBean.java index 0fcb665f27f..0a16e9197da 100644 --- a/server/src/main/java/org/cloudfoundry/identity/uaa/provider/oauth/OauthIDPWrapperFactoryBean.java +++ b/server/src/main/java/org/cloudfoundry/identity/uaa/provider/oauth/OauthIDPWrapperFactoryBean.java @@ -36,6 +36,7 @@ import static org.cloudfoundry.identity.uaa.constants.OriginKeys.OAUTH20; import static org.cloudfoundry.identity.uaa.constants.OriginKeys.OIDC10; import static org.cloudfoundry.identity.uaa.provider.ExternalIdentityProviderDefinition.ATTRIBUTE_MAPPINGS; +import static org.cloudfoundry.identity.uaa.provider.ExternalIdentityProviderDefinition.EXTERNAL_GROUPS_WHITELIST; import static org.cloudfoundry.identity.uaa.provider.ExternalIdentityProviderDefinition.STORE_CUSTOM_ATTRIBUTES_NAME; import static org.springframework.util.StringUtils.hasText; @@ -148,6 +149,7 @@ protected void setCommonProperties(Map idpDefinitionMap, Abstrac idpDefinition.setTokenKey((String) idpDefinitionMap.get("tokenKey")); idpDefinition.setIssuer((String) idpDefinitionMap.get("issuer")); idpDefinition.setAttributeMappings((Map) idpDefinitionMap.get(ATTRIBUTE_MAPPINGS)); + idpDefinition.setExternalGroupsWhitelist((List) idpDefinitionMap.get(EXTERNAL_GROUPS_WHITELIST)); idpDefinition.setAdditionalConfiguration((Map) idpDefinitionMap.get("additionalConfiguration")); idpDefinition.setScopes((List) idpDefinitionMap.get("scopes")); idpDefinition.setUserPropagationParameter((String) idpDefinitionMap.get("userPropagationParameter")); diff --git a/server/src/test/java/org/cloudfoundry/identity/uaa/provider/oauth/OauthIdentityProviderDefinitionFactoryBeanTest.java b/server/src/test/java/org/cloudfoundry/identity/uaa/provider/oauth/OauthIdentityProviderDefinitionFactoryBeanTest.java index 467597afc7d..992595b0f62 100644 --- a/server/src/test/java/org/cloudfoundry/identity/uaa/provider/oauth/OauthIdentityProviderDefinitionFactoryBeanTest.java +++ b/server/src/test/java/org/cloudfoundry/identity/uaa/provider/oauth/OauthIdentityProviderDefinitionFactoryBeanTest.java @@ -25,11 +25,13 @@ import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Set; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.cloudfoundry.identity.uaa.provider.ExternalIdentityProviderDefinition.EXTERNAL_GROUPS_WHITELIST; import static org.cloudfoundry.identity.uaa.provider.ExternalIdentityProviderDefinition.GROUP_ATTRIBUTE_NAME; import static org.cloudfoundry.identity.uaa.provider.ExternalIdentityProviderDefinition.STORE_CUSTOM_ATTRIBUTES_NAME; import static org.cloudfoundry.identity.uaa.util.UaaMapUtils.entry; @@ -119,6 +121,19 @@ void external_group_mapping_default_in_body() { assertThat(providerDefinition.getGroupMappingMode()).isNull(); } + @Test + void external_groups_whitelist_default_is_empty() { + factoryBean.setCommonProperties(idpDefinitionMap, providerDefinition); + assertThat(providerDefinition.getExternalGroupsWhitelist()).isEmpty(); + } + + @Test + void external_groups_whitelist_in_body() { + idpDefinitionMap.put(EXTERNAL_GROUPS_WHITELIST, List.of("*")); + factoryBean.setCommonProperties(idpDefinitionMap, providerDefinition); + assertThat(providerDefinition.getExternalGroupsWhitelist()).containsExactly("*"); + } + @Test void additionalConfigurationIsMapped() { Map additionalConfiguration = map(