mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-09-17 12:09:16 +00:00
Rename property to authorities-claim-expressions
See gh-48490
This commit is contained in:
+12
-12
@@ -71,11 +71,11 @@ class JwtConverterConfiguration {
|
||||
|
||||
private Converter<Jwt, Collection<GrantedAuthority>> grantedAuthoritiesConverter(
|
||||
OAuth2ResourceServerProperties.Jwt properties) {
|
||||
List<String> authoritiesExpressions = properties.getAuthoritiesExpressions();
|
||||
if (CollectionUtils.isEmpty(authoritiesExpressions)) {
|
||||
List<String> authoritiesClaimExpressions = properties.getAuthoritiesClaimExpressions();
|
||||
if (CollectionUtils.isEmpty(authoritiesClaimExpressions)) {
|
||||
return createJwtGrantedAuthoritiesConverter(properties);
|
||||
}
|
||||
return createExpressionJwtGrantedAuthoritiesConverters(properties, authoritiesExpressions);
|
||||
return createExpressionJwtGrantedAuthoritiesConverters(properties, authoritiesClaimExpressions);
|
||||
}
|
||||
|
||||
private Converter<Jwt, Collection<GrantedAuthority>> createJwtGrantedAuthoritiesConverter(
|
||||
@@ -89,13 +89,13 @@ class JwtConverterConfiguration {
|
||||
}
|
||||
|
||||
private Converter<Jwt, Collection<GrantedAuthority>> createExpressionJwtGrantedAuthoritiesConverters(
|
||||
OAuth2ResourceServerProperties.Jwt properties, List<String> authoritiesExpressions) {
|
||||
OAuth2ResourceServerProperties.Jwt properties, List<String> claimExpressions) {
|
||||
checkMutualExclusivity(properties);
|
||||
List<Converter<Jwt, Collection<GrantedAuthority>>> 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"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-4
@@ -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<String> authoritiesExpressions = new ArrayList<>();
|
||||
private List<String> authoritiesClaimExpressions = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* JWT principal claim name.
|
||||
@@ -175,12 +175,12 @@ public class OAuth2ResourceServerProperties {
|
||||
this.authoritiesClaimName = authoritiesClaimName;
|
||||
}
|
||||
|
||||
public List<String> getAuthoritiesExpressions() {
|
||||
return this.authoritiesExpressions;
|
||||
public List<String> getAuthoritiesClaimExpressions() {
|
||||
return this.authoritiesClaimExpressions;
|
||||
}
|
||||
|
||||
public void setAuthoritiesExpressions(List<String> authoritiesExpressions) {
|
||||
this.authoritiesExpressions = authoritiesExpressions;
|
||||
this.authoritiesClaimExpressions = authoritiesExpressions;
|
||||
}
|
||||
|
||||
public @Nullable String getPrincipalClaimName() {
|
||||
|
||||
+12
-12
@@ -77,11 +77,11 @@ class ReactiveJwtConverterConfiguration {
|
||||
|
||||
private Converter<Jwt, Collection<GrantedAuthority>> grantedAuthoritiesConverter(
|
||||
OAuth2ResourceServerProperties.Jwt properties) {
|
||||
List<String> authoritiesExpressions = properties.getAuthoritiesExpressions();
|
||||
if (CollectionUtils.isEmpty(authoritiesExpressions)) {
|
||||
List<String> authoritiesClaimExpressions = properties.getAuthoritiesClaimExpressions();
|
||||
if (CollectionUtils.isEmpty(authoritiesClaimExpressions)) {
|
||||
return createJwtGrantedAuthoritiesConverter(properties);
|
||||
}
|
||||
return createExpressionJwtGrantedAuthoritiesConverters(properties, authoritiesExpressions);
|
||||
return createExpressionJwtGrantedAuthoritiesConverters(properties, authoritiesClaimExpressions);
|
||||
}
|
||||
|
||||
private Converter<Jwt, Collection<GrantedAuthority>> createJwtGrantedAuthoritiesConverter(
|
||||
@@ -95,13 +95,13 @@ class ReactiveJwtConverterConfiguration {
|
||||
}
|
||||
|
||||
private Converter<Jwt, Collection<GrantedAuthority>> createExpressionJwtGrantedAuthoritiesConverters(
|
||||
OAuth2ResourceServerProperties.Jwt properties, List<String> authoritiesExpressions) {
|
||||
OAuth2ResourceServerProperties.Jwt properties, List<String> claimExpressions) {
|
||||
checkMutualExclusivity(properties);
|
||||
List<Converter<Jwt, Collection<GrantedAuthority>>> 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"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+8
-7
@@ -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()
|
||||
|
||||
+8
-7
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user