This is an automated email from the ASF dual-hosted git repository.
epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new d430226 SOLR-15203: remove deprecated jwk url (#31)
d430226 is described below
commit d4302260a22e3400815776e541405b20ae000716
Author: Eric Pugh <[email protected]>
AuthorDate: Thu Mar 18 20:11:43 2021 -0400
SOLR-15203: remove deprecated jwk url (#31)
* Remove deprecated parameter jwkUrl
---
solr/CHANGES.txt | 2 ++
.../org/apache/solr/security/JWTAuthPlugin.java | 7 ++-----
.../org/apache/solr/security/JWTIssuerConfig.java | 8 +-------
.../org/apache/solr/security/JWTAuthPluginTest.java | 21 +++++----------------
.../src/jwt-authentication-plugin.adoc | 2 --
.../solr-ref-guide/src/major-changes-in-solr-9.adoc | 2 ++
6 files changed, 12 insertions(+), 30 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 30759b9..6bd4e42 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -98,6 +98,8 @@ when told to. The admin UI now tells it to. (Nazerke Seidan,
David Smiley)
* SOLR-15161: Don't encourage users to hack JSON response mimetype by
documenting in examples how to
specify wt=json use mimetype of text/plain. (Eric Pugh)
+* SOLR-15203: remove deprecated parameter name jwkUrl in favour of jwksUrl for
the JWK Url. (Eric Pugh)
+
Other Changes
----------------------
* SOLR-14656: Autoscaling framework removed (Ishan Chattopadhyaya, noble, Ilan
Ginzburg)
diff --git a/solr/core/src/java/org/apache/solr/security/JWTAuthPlugin.java
b/solr/core/src/java/org/apache/solr/security/JWTAuthPlugin.java
index 8b9271a..5306701 100644
--- a/solr/core/src/java/org/apache/solr/security/JWTAuthPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/JWTAuthPlugin.java
@@ -95,7 +95,7 @@ public class JWTAuthPlugin extends AuthenticationPlugin
implements SpecProvider,
PARAM_JWK_CACHE_DURATION, PARAM_CLAIMS_MATCH, PARAM_SCOPE, PARAM_REALM,
PARAM_ROLES_CLAIM,
PARAM_ADMINUI_SCOPE, PARAM_REDIRECT_URIS, PARAM_REQUIRE_ISSUER,
PARAM_ISSUERS,
// These keys are supported for now to enable PRIMARY issuer config
through top-level keys
- JWTIssuerConfig.PARAM_JWK_URL, JWTIssuerConfig.PARAM_JWKS_URL,
JWTIssuerConfig.PARAM_JWK, JWTIssuerConfig.PARAM_ISSUER,
+ JWTIssuerConfig.PARAM_JWKS_URL, JWTIssuerConfig.PARAM_JWK,
JWTIssuerConfig.PARAM_ISSUER,
JWTIssuerConfig.PARAM_CLIENT_ID, JWTIssuerConfig.PARAM_WELL_KNOWN_URL,
JWTIssuerConfig.PARAM_AUDIENCE,
JWTIssuerConfig.PARAM_AUTHORIZATION_ENDPOINT);
@@ -202,13 +202,10 @@ public class JWTAuthPlugin extends AuthenticationPlugin
implements SpecProvider,
@SuppressWarnings("unchecked")
private Optional<JWTIssuerConfig> parseIssuerFromTopLevelConfig(Map<String,
Object> conf) {
try {
- if (conf.get(JWTIssuerConfig.PARAM_JWK_URL) != null) {
- log.warn("Configuration uses deprecated key {}. Please use {}
instead", JWTIssuerConfig.PARAM_JWK_URL, JWTIssuerConfig.PARAM_JWKS_URL);
- }
JWTIssuerConfig primary = new JWTIssuerConfig(PRIMARY_ISSUER)
.setIss((String) conf.get(JWTIssuerConfig.PARAM_ISSUER))
.setAud((String) conf.get(JWTIssuerConfig.PARAM_AUDIENCE))
- .setJwksUrl(conf.get(JWTIssuerConfig.PARAM_JWKS_URL) != null ?
conf.get(JWTIssuerConfig.PARAM_JWKS_URL) :
conf.get(JWTIssuerConfig.PARAM_JWK_URL))
+ .setJwksUrl(conf.get(JWTIssuerConfig.PARAM_JWKS_URL))
.setAuthorizationEndpoint((String)
conf.get(JWTIssuerConfig.PARAM_AUTHORIZATION_ENDPOINT))
.setClientId((String) conf.get(JWTIssuerConfig.PARAM_CLIENT_ID))
.setWellKnownUrl((String)
conf.get(JWTIssuerConfig.PARAM_WELL_KNOWN_URL));
diff --git a/solr/core/src/java/org/apache/solr/security/JWTIssuerConfig.java
b/solr/core/src/java/org/apache/solr/security/JWTIssuerConfig.java
index 4e0e107..79781e5 100644
--- a/solr/core/src/java/org/apache/solr/security/JWTIssuerConfig.java
+++ b/solr/core/src/java/org/apache/solr/security/JWTIssuerConfig.java
@@ -46,8 +46,6 @@ import org.slf4j.LoggerFactory;
public class JWTIssuerConfig {
private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
static final String PARAM_ISS_NAME = "name";
- @Deprecated(since = "8.3") // Remove this option at some point
- static final String PARAM_JWK_URL = "jwkUrl";
static final String PARAM_JWKS_URL = "jwksUrl";
static final String PARAM_JWK = "jwk";
static final String PARAM_ISSUER = "iss";
@@ -128,10 +126,7 @@ public class JWTIssuerConfig {
setIss((String) conf.get(PARAM_ISSUER));
setClientId((String) conf.get(PARAM_CLIENT_ID));
setAud((String) conf.get(PARAM_AUDIENCE));
- if (conf.get(PARAM_JWK_URL) != null) {
- log.warn("Configuration uses deprecated key {}. Please use {} instead",
PARAM_JWK_URL, PARAM_JWKS_URL);
- }
- Object confJwksUrl = conf.get(PARAM_JWKS_URL) != null ?
conf.get(PARAM_JWKS_URL) : conf.get(PARAM_JWK_URL);
+ Object confJwksUrl = conf.get(PARAM_JWKS_URL);
setJwksUrl(confJwksUrl);
setJsonWebKeySet(conf.get(PARAM_JWK));
setAuthorizationEndpoint((String) conf.get(PARAM_AUTHORIZATION_ENDPOINT));
@@ -142,7 +137,6 @@ public class JWTIssuerConfig {
conf.remove(PARAM_CLIENT_ID);
conf.remove(PARAM_AUDIENCE);
conf.remove(PARAM_JWKS_URL);
- conf.remove(PARAM_JWK_URL);
conf.remove(PARAM_JWK);
conf.remove(PARAM_AUTHORIZATION_ENDPOINT);
diff --git a/solr/core/src/test/org/apache/solr/security/JWTAuthPluginTest.java
b/solr/core/src/test/org/apache/solr/security/JWTAuthPluginTest.java
index 9071341..2b1ce60 100644
--- a/solr/core/src/test/org/apache/solr/security/JWTAuthPluginTest.java
+++ b/solr/core/src/test/org/apache/solr/security/JWTAuthPluginTest.java
@@ -108,7 +108,7 @@ public class JWTAuthPluginTest extends SolrTestCaseJ4 {
claims.setIssuedAtToNow(); // when the token was issued/created (now)
claims.setNotBeforeMinutesInThePast(2); // time before which the token is
not yet valid (2 minutes ago)
claims.setSubject("solruser"); // the subject/principal is whom the token
is about
- claims.setStringClaim("scope", "solr:read");
+ claims.setStringClaim("scope", "solr:read");
claims.setClaim("name", "Solr User"); // additional claims/attributes
about the subject can be added
claims.setClaim("customPrincipal", "custom"); // additional
claims/attributes about the subject can be added
claims.setClaim("claim1", "foo"); // additional claims/attributes about
the subject can be added
@@ -131,7 +131,7 @@ public class JWTAuthPluginTest extends SolrTestCaseJ4 {
testConfig.put("principalClaim", "customPrincipal");
testConfig.put("jwk", testJwk);
plugin.init(testConfig);
-
+
minimalConfig = new HashMap<>();
minimalConfig.put("class", "org.apache.solr.security.JWTAuthPlugin");
}
@@ -183,17 +183,6 @@ public class JWTAuthPluginTest extends SolrTestCaseJ4 {
}
@Test
- @Deprecated(since = "8.3")
- public void initWithJwkUrlForBackwardsCompat() {
- HashMap<String, Object> authConf = new HashMap<>();
- authConf.put("jwkUrl", "https://127.0.0.1:9999/foo.jwk");
- plugin = new JWTAuthPlugin();
- plugin.init(authConf);
- assertEquals(1, plugin.getIssuerConfigs().size());
- assertEquals(1, plugin.getIssuerConfigs().get(0).getJwksUrls().size());
- }
-
- @Test
public void initWithJwksUrl() {
HashMap<String, Object> authConf = new HashMap<>();
authConf.put("jwksUrl", "https://127.0.0.1:9999/foo.jwk");
@@ -204,7 +193,7 @@ public class JWTAuthPluginTest extends SolrTestCaseJ4 {
}
@Test
- public void initWithJwkUrlArray() {
+ public void initWithJwksUrlArray() {
HashMap<String, Object> authConf = new HashMap<>();
authConf.put("jwksUrl", Arrays.asList("https://127.0.0.1:9999/foo.jwk",
"https://127.0.0.1:9999/foo2.jwk"));
authConf.put("iss", "myIssuer");
@@ -375,7 +364,7 @@ public class JWTAuthPluginTest extends SolrTestCaseJ4 {
assertNull(resp.getPrincipal());
assertEquals(SCOPE_MISSING, resp.getAuthCode());
}
-
+
@Test
public void noHeaderBlockUnknown() {
testConfig.put("blockUnknown", true);
@@ -399,7 +388,7 @@ public class JWTAuthPluginTest extends SolrTestCaseJ4 {
JWTAuthPlugin.JWTAuthenticationResponse resp = plugin.authenticate(null);
assertEquals(JWTAuthPlugin.JWTAuthenticationResponse.AuthCode.PASS_THROUGH,
resp.getAuthCode());
}
-
+
@Test
public void wellKnownConfigNoHeaderPassThrough() {
String wellKnownUrl =
TEST_PATH().resolve("security").resolve("jwt_well-known-config.json").toAbsolutePath().toUri().toString();
diff --git a/solr/solr-ref-guide/src/jwt-authentication-plugin.adoc
b/solr/solr-ref-guide/src/jwt-authentication-plugin.adoc
index 8eaadc3..00db978 100644
--- a/solr/solr-ref-guide/src/jwt-authentication-plugin.adoc
+++ b/solr/solr-ref-guide/src/jwt-authentication-plugin.adoc
@@ -90,8 +90,6 @@ To start enforcing authentication for all users, requiring a
valid JWT in the `A
}
----
-TIP: The configuration key `jwkUrl` is also supported as an alternative to
`jwksUrl` for backwards compatibility with early versions of the plugin.
-
=== With Admin UI Support
The next example shows configuring using
https://openid.net/specs/openid-connect-discovery-1_0.html[OpenID Connect
Discovery] with a well-known URI for automatic configuration of many common
settings, including ability to use the Admin UI with an OpenID Connect enabled
Identity Provider.
diff --git a/solr/solr-ref-guide/src/major-changes-in-solr-9.adoc
b/solr/solr-ref-guide/src/major-changes-in-solr-9.adoc
index f889fab..4a4ff60 100644
--- a/solr/solr-ref-guide/src/major-changes-in-solr-9.adoc
+++ b/solr/solr-ref-guide/src/major-changes-in-solr-9.adoc
@@ -153,6 +153,8 @@ _(raw; not yet edited)_
* SOLR-15156: Child Doc Transformer's `childFilter` param no longer applies
query syntax
escaping because it's inconsistent with the rest of Solr and was limiting.
This refers to `[child childFilter='field:value']`.
+* SOLR-15203: Remove the deprecated `jwkUrl` in favour of `jwksUrl` when
configuring JWT authentication.
+
=== Upgrade Prerequisites in Solr 9
* Upgrade all collections in stateFormat=1 to stateFormat=2 *before* upgrading
to Solr 9, as Solr 9 does not support the