diff --git a/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/JwtConverterConfiguration.java b/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/JwtConverterConfiguration.java index 22f3aca92db..3ffb6e0e9e5 100644 --- a/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/JwtConverterConfiguration.java +++ b/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/JwtConverterConfiguration.java @@ -71,11 +71,11 @@ class JwtConverterConfiguration { private Converter> grantedAuthoritiesConverter( OAuth2ResourceServerProperties.Jwt properties) { - List authoritiesExpressions = properties.getAuthoritiesExpressions(); - if (CollectionUtils.isEmpty(authoritiesExpressions)) { + List authoritiesClaimExpressions = properties.getAuthoritiesClaimExpressions(); + if (CollectionUtils.isEmpty(authoritiesClaimExpressions)) { return createJwtGrantedAuthoritiesConverter(properties); } - return createExpressionJwtGrantedAuthoritiesConverters(properties, authoritiesExpressions); + return createExpressionJwtGrantedAuthoritiesConverters(properties, authoritiesClaimExpressions); } private Converter> createJwtGrantedAuthoritiesConverter( @@ -89,13 +89,13 @@ class JwtConverterConfiguration { } private Converter> createExpressionJwtGrantedAuthoritiesConverters( - OAuth2ResourceServerProperties.Jwt properties, List authoritiesExpressions) { + OAuth2ResourceServerProperties.Jwt properties, List claimExpressions) { checkMutualExclusivity(properties); List>> converters = new ArrayList<>(); SpelExpressionParser parser = new SpelExpressionParser(); - for (String authoritiesExpression : authoritiesExpressions) { + for (String claimExpression : claimExpressions) { ExpressionJwtGrantedAuthoritiesConverter converter = new ExpressionJwtGrantedAuthoritiesConverter( - parser.parseExpression(authoritiesExpression)); + parser.parseExpression(claimExpression)); if (properties.getAuthorityPrefix() != null) { converter.setAuthorityPrefix(properties.getAuthorityPrefix()); } @@ -106,14 +106,14 @@ class JwtConverterConfiguration { private void checkMutualExclusivity(OAuth2ResourceServerProperties.Jwt properties) { MutuallyExclusiveConfigurationPropertiesException.throwIfMultipleMatchingValuesIn((entries) -> { - entries.put("spring.security.oauth2.resourceserver.jwt.authorities-expressions", - properties.getAuthoritiesExpressions()); + entries.put("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions", + properties.getAuthoritiesClaimExpressions()); entries.put("spring.security.oauth2.resourceserver.jwt.authorities-claim-name", properties.getAuthoritiesClaimName()); }, (value) -> !nullOrEmptyList(value)); MutuallyExclusiveConfigurationPropertiesException.throwIfMultipleMatchingValuesIn((entries) -> { - entries.put("spring.security.oauth2.resourceserver.jwt.authorities-expressions", - properties.getAuthoritiesExpressions()); + entries.put("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions", + properties.getAuthoritiesClaimExpressions()); entries.put("spring.security.oauth2.resourceserver.jwt.authorities-claim-delimiter", properties.getAuthoritiesClaimDelimiter()); }, (value) -> !nullOrEmptyList(value)); @@ -155,8 +155,8 @@ class JwtConverterConfiguration { static class OnAuthoritiesExpressionsCondition extends OnPropertyListCondition { OnAuthoritiesExpressionsCondition() { - super("spring.security.oauth2.resourceserver.jwt.authorities-expressions", - () -> ConditionMessage.forCondition("Authorities expressions")); + super("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions", + () -> ConditionMessage.forCondition("Authorities claim expressions")); } } diff --git a/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/OAuth2ResourceServerProperties.java b/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/OAuth2ResourceServerProperties.java index d025da819da..b5bcb914d75 100644 --- a/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/OAuth2ResourceServerProperties.java +++ b/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/OAuth2ResourceServerProperties.java @@ -104,7 +104,7 @@ public class OAuth2ResourceServerProperties { * 'spring.security.oauth2.resourceserver.jwt.authorities-claim-name' and * 'spring.security.oauth2.resourceserver.jwt.authorities-claim-delimiter'. */ - private List authoritiesExpressions = new ArrayList<>(); + private List authoritiesClaimExpressions = new ArrayList<>(); /** * JWT principal claim name. @@ -175,12 +175,12 @@ public class OAuth2ResourceServerProperties { this.authoritiesClaimName = authoritiesClaimName; } - public List getAuthoritiesExpressions() { - return this.authoritiesExpressions; + public List getAuthoritiesClaimExpressions() { + return this.authoritiesClaimExpressions; } public void setAuthoritiesExpressions(List authoritiesExpressions) { - this.authoritiesExpressions = authoritiesExpressions; + this.authoritiesClaimExpressions = authoritiesExpressions; } public @Nullable String getPrincipalClaimName() { diff --git a/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/reactive/ReactiveJwtConverterConfiguration.java b/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/reactive/ReactiveJwtConverterConfiguration.java index f2d4a951bfb..9ff24500f90 100644 --- a/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/reactive/ReactiveJwtConverterConfiguration.java +++ b/module/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/reactive/ReactiveJwtConverterConfiguration.java @@ -77,11 +77,11 @@ class ReactiveJwtConverterConfiguration { private Converter> grantedAuthoritiesConverter( OAuth2ResourceServerProperties.Jwt properties) { - List authoritiesExpressions = properties.getAuthoritiesExpressions(); - if (CollectionUtils.isEmpty(authoritiesExpressions)) { + List authoritiesClaimExpressions = properties.getAuthoritiesClaimExpressions(); + if (CollectionUtils.isEmpty(authoritiesClaimExpressions)) { return createJwtGrantedAuthoritiesConverter(properties); } - return createExpressionJwtGrantedAuthoritiesConverters(properties, authoritiesExpressions); + return createExpressionJwtGrantedAuthoritiesConverters(properties, authoritiesClaimExpressions); } private Converter> createJwtGrantedAuthoritiesConverter( @@ -95,13 +95,13 @@ class ReactiveJwtConverterConfiguration { } private Converter> createExpressionJwtGrantedAuthoritiesConverters( - OAuth2ResourceServerProperties.Jwt properties, List authoritiesExpressions) { + OAuth2ResourceServerProperties.Jwt properties, List claimExpressions) { checkMutualExclusivity(properties); List>> converters = new ArrayList<>(); SpelExpressionParser parser = new SpelExpressionParser(); - for (String authoritiesExpression : authoritiesExpressions) { + for (String claimExpression : claimExpressions) { ExpressionJwtGrantedAuthoritiesConverter converter = new ExpressionJwtGrantedAuthoritiesConverter( - parser.parseExpression(authoritiesExpression)); + parser.parseExpression(claimExpression)); if (properties.getAuthorityPrefix() != null) { converter.setAuthorityPrefix(properties.getAuthorityPrefix()); } @@ -112,14 +112,14 @@ class ReactiveJwtConverterConfiguration { private void checkMutualExclusivity(OAuth2ResourceServerProperties.Jwt properties) { MutuallyExclusiveConfigurationPropertiesException.throwIfMultipleMatchingValuesIn((entries) -> { - entries.put("spring.security.oauth2.resourceserver.jwt.authorities-expressions", - properties.getAuthoritiesExpressions()); + entries.put("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions", + properties.getAuthoritiesClaimExpressions()); entries.put("spring.security.oauth2.resourceserver.jwt.authorities-claim-name", properties.getAuthoritiesClaimName()); }, (value) -> !nullOrEmptyList(value)); MutuallyExclusiveConfigurationPropertiesException.throwIfMultipleMatchingValuesIn((entries) -> { - entries.put("spring.security.oauth2.resourceserver.jwt.authorities-expressions", - properties.getAuthoritiesExpressions()); + entries.put("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions", + properties.getAuthoritiesClaimExpressions()); entries.put("spring.security.oauth2.resourceserver.jwt.authorities-claim-delimiter", properties.getAuthoritiesClaimDelimiter()); }, (value) -> !nullOrEmptyList(value)); @@ -161,8 +161,8 @@ class ReactiveJwtConverterConfiguration { static class OnAuthoritiesExpressionsCondition extends OnPropertyListCondition { OnAuthoritiesExpressionsCondition() { - super("spring.security.oauth2.resourceserver.jwt.authorities-expressions", - () -> ConditionMessage.forCondition("Authorities expressions")); + super("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions", + () -> ConditionMessage.forCondition("Authorities claim expressions")); } } diff --git a/module/spring-boot-security-oauth2-resource-server/src/test/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/OAuth2ResourceServerAutoConfigurationTests.java b/module/spring-boot-security-oauth2-resource-server/src/test/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/OAuth2ResourceServerAutoConfigurationTests.java index a4047ecb333..e9cd6cb36af 100644 --- a/module/spring-boot-security-oauth2-resource-server/src/test/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/OAuth2ResourceServerAutoConfigurationTests.java +++ b/module/spring-boot-security-oauth2-resource-server/src/test/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/OAuth2ResourceServerAutoConfigurationTests.java @@ -693,7 +693,8 @@ class OAuth2ResourceServerAutoConfigurationTests { @Test void shouldConfigureJwtConverterIfAuthoritiesExpressionIsSet() { - this.contextRunner.withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-expressions=zero") + this.contextRunner + .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions=zero") .run((context) -> { assertThat(context).hasSingleBean(JwtAuthenticationConverter.class); JwtAuthenticationConverter converter = context.getBean(JwtAuthenticationConverter.class); @@ -707,8 +708,8 @@ class OAuth2ResourceServerAutoConfigurationTests { @Test void shouldConfigureJwtConverterIfAuthoritiesExpressionsAreSet() { this.contextRunner - .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-expressions[0]=zero", - "spring.security.oauth2.resourceserver.jwt.authorities-expressions[1]=one") + .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[0]=zero", + "spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[1]=one") .run((context) -> { assertThat(context).hasSingleBean(JwtAuthenticationConverter.class); JwtAuthenticationConverter converter = context.getBean(JwtAuthenticationConverter.class); @@ -723,8 +724,8 @@ class OAuth2ResourceServerAutoConfigurationTests { @Test void shouldApplyCustomAuthorityPrefixIfAuthoritiesExpressionsAreSet() { this.contextRunner - .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-expressions[0]=zero", - "spring.security.oauth2.resourceserver.jwt.authorities-expressions[1]=one", + .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[0]=zero", + "spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[1]=one", "spring.security.oauth2.resourceserver.jwt.authority-prefix=CUSTOM_") .run((context) -> { assertThat(context).hasSingleBean(JwtAuthenticationConverter.class); @@ -740,7 +741,7 @@ class OAuth2ResourceServerAutoConfigurationTests { @Test void shouldFailIfBothAuthoritiesExpressionsAndAuthoritiesClaimDelimiterAreSet() { this.contextRunner - .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-expressions[0]=zero", + .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[0]=zero", "spring.security.oauth2.resourceserver.jwt.authorities-claim-delimiter=delimiter") .run((context) -> assertThat(context).getFailure() .rootCause() @@ -750,7 +751,7 @@ class OAuth2ResourceServerAutoConfigurationTests { @Test void shouldFailIfBothAuthoritiesExpressionsAndAuthoritiesClaimNameAreSet() { this.contextRunner - .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-expressions[0]=zero", + .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[0]=zero", "spring.security.oauth2.resourceserver.jwt.authorities-claim-name=name") .run((context) -> assertThat(context).getFailure() .rootCause() diff --git a/module/spring-boot-security-oauth2-resource-server/src/test/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/reactive/ReactiveOAuth2ResourceServerAutoConfigurationTests.java b/module/spring-boot-security-oauth2-resource-server/src/test/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/reactive/ReactiveOAuth2ResourceServerAutoConfigurationTests.java index c1fcf8c0d8b..0e482298653 100644 --- a/module/spring-boot-security-oauth2-resource-server/src/test/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/reactive/ReactiveOAuth2ResourceServerAutoConfigurationTests.java +++ b/module/spring-boot-security-oauth2-resource-server/src/test/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/reactive/ReactiveOAuth2ResourceServerAutoConfigurationTests.java @@ -682,7 +682,8 @@ class ReactiveOAuth2ResourceServerAutoConfigurationTests { @Test void shouldConfigureJwtConverterIfAuthoritiesExpressionIsSet() { - this.contextRunner.withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-expressions=zero") + this.contextRunner + .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions=zero") .run((context) -> { assertThat(context).hasSingleBean(ReactiveJwtAuthenticationConverter.class); ReactiveJwtAuthenticationConverter converter = context @@ -697,8 +698,8 @@ class ReactiveOAuth2ResourceServerAutoConfigurationTests { @Test void shouldConfigureJwtConverterIfAuthoritiesExpressionsAreSet() { this.contextRunner - .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-expressions[0]=zero", - "spring.security.oauth2.resourceserver.jwt.authorities-expressions[1]=one") + .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[0]=zero", + "spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[1]=one") .run((context) -> { assertThat(context).hasSingleBean(ReactiveJwtAuthenticationConverter.class); ReactiveJwtAuthenticationConverter converter = context @@ -715,8 +716,8 @@ class ReactiveOAuth2ResourceServerAutoConfigurationTests { @Test void shouldApplyCustomAuthorityPrefixIfAuthoritiesExpressionsAreSet() { this.contextRunner - .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-expressions[0]=zero", - "spring.security.oauth2.resourceserver.jwt.authorities-expressions[1]=one", + .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[0]=zero", + "spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[1]=one", "spring.security.oauth2.resourceserver.jwt.authority-prefix=CUSTOM_") .run((context) -> { assertThat(context).hasSingleBean(ReactiveJwtAuthenticationConverter.class); @@ -734,7 +735,7 @@ class ReactiveOAuth2ResourceServerAutoConfigurationTests { @Test void shouldFailIfBothAuthoritiesExpressionsAndAuthoritiesClaimDelimiterAreSet() { this.contextRunner - .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-expressions[0]=zero", + .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[0]=zero", "spring.security.oauth2.resourceserver.jwt.authorities-claim-delimiter=delimiter") .run((context) -> assertThat(context).getFailure() .rootCause() @@ -744,7 +745,7 @@ class ReactiveOAuth2ResourceServerAutoConfigurationTests { @Test void shouldFailIfBothAuthoritiesExpressionsAndAuthoritiesClaimNameAreSet() { this.contextRunner - .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-expressions[0]=zero", + .withPropertyValues("spring.security.oauth2.resourceserver.jwt.authorities-claim-expressions[0]=zero", "spring.security.oauth2.resourceserver.jwt.authorities-claim-name=name") .run((context) -> assertThat(context).getFailure() .rootCause()