|
@@ -1,5 +1,5 @@
|
|
|
/*
|
|
|
- * Copyright 2002-2018 the original author or authors.
|
|
|
+ * Copyright 2002-2022 the original author or authors.
|
|
|
*
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
* you may not use this file except in compliance with the License.
|
|
@@ -45,10 +45,14 @@ public final class JwtGrantedAuthoritiesConverter implements Converter<Jwt, Coll
|
|
|
|
|
|
private static final String DEFAULT_AUTHORITY_PREFIX = "SCOPE_";
|
|
|
|
|
|
+ private static final String DEFAULT_AUTHORITIES_SPLIT_REGEX = " ";
|
|
|
+
|
|
|
private static final Collection<String> WELL_KNOWN_AUTHORITIES_CLAIM_NAMES = Arrays.asList("scope", "scp");
|
|
|
|
|
|
private String authorityPrefix = DEFAULT_AUTHORITY_PREFIX;
|
|
|
|
|
|
+ private String authoritiesSplitRegex = DEFAULT_AUTHORITIES_SPLIT_REGEX;
|
|
|
+
|
|
|
private String authoritiesClaimName;
|
|
|
|
|
|
/**
|
|
@@ -77,6 +81,18 @@ public final class JwtGrantedAuthoritiesConverter implements Converter<Jwt, Coll
|
|
|
this.authorityPrefix = authorityPrefix;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Sets the regex to use for splitting the value of the authorities claim into
|
|
|
+ * {@link GrantedAuthority authorities}. Defaults to
|
|
|
+ * {@link JwtGrantedAuthoritiesConverter#DEFAULT_AUTHORITIES_SPLIT_REGEX}.
|
|
|
+ * @param authoritiesSplitRegex The regex used to split the authorities
|
|
|
+ * @since 6.1
|
|
|
+ */
|
|
|
+ public void setAuthoritiesSplitRegex(String authoritiesSplitRegex) {
|
|
|
+ Assert.notNull(authoritiesSplitRegex, "authoritiesSplitRegex cannot be null");
|
|
|
+ this.authoritiesSplitRegex = authoritiesSplitRegex;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Sets the name of token claim to use for mapping {@link GrantedAuthority
|
|
|
* authorities} by this converter. Defaults to
|
|
@@ -113,7 +129,7 @@ public final class JwtGrantedAuthoritiesConverter implements Converter<Jwt, Coll
|
|
|
Object authorities = jwt.getClaim(claimName);
|
|
|
if (authorities instanceof String) {
|
|
|
if (StringUtils.hasText((String) authorities)) {
|
|
|
- return Arrays.asList(((String) authorities).split(" "));
|
|
|
+ return Arrays.asList(((String) authorities).split(this.authoritiesSplitRegex));
|
|
|
}
|
|
|
return Collections.emptyList();
|
|
|
}
|