diff --git a/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminBootstrap.java b/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminBootstrap.java index 4c5dac5e792..7e180f9443f 100644 --- a/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminBootstrap.java +++ b/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminBootstrap.java @@ -238,13 +238,13 @@ private void addNewClients() { if (map.get("jwks_uri") instanceof String) { String jwksUri = (String) map.get("jwks_uri"); - PrivateKeyJwtConfiguration keyConfig = PrivateKeyJwtConfiguration.parse(UaaUrlUtils.normalizeUri(jwksUri), null); + ClientJwtConfiguration keyConfig = ClientJwtConfiguration.parse(UaaUrlUtils.normalizeUri(jwksUri), null); if (keyConfig != null && keyConfig.getCleanString() != null) { clientRegistrationService.addClientKeyConfig(clientId, keyConfig.getPrivateKeyJwtUrl(), IdentityZone.getUaaZoneId(), override); } } else if (map.get("jwks") instanceof String) { String jwks = (String) map.get("jwks"); - PrivateKeyJwtConfiguration keyConfig = PrivateKeyJwtConfiguration.parse(null, jwks); + ClientJwtConfiguration keyConfig = ClientJwtConfiguration.parse(null, jwks); if (keyConfig != null && keyConfig.getCleanString() != null) { clientRegistrationService.addClientKeyConfig(clientId, keyConfig.getCleanString(), IdentityZone.getUaaZoneId(), override); } diff --git a/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpoints.java b/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpoints.java index 74bb3f67def..34d7d1a7e9f 100644 --- a/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpoints.java +++ b/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpoints.java @@ -553,7 +553,7 @@ public ActionResult changeClientJwt(@PathVariable String client_id, @RequestBody throw new InvalidClientDetailsException(e.getMessage()); } - PrivateKeyJwtConfiguration clientKeyConfig = PrivateKeyJwtConfiguration.readValue(clientDetails); + ClientJwtConfiguration clientKeyConfig = ClientJwtConfiguration.readValue(clientDetails); ActionResult result; switch (change.getChangeMode()){ diff --git a/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpointsValidator.java b/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpointsValidator.java index ce5a1f7335e..eec117c68a4 100644 --- a/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpointsValidator.java +++ b/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpointsValidator.java @@ -250,10 +250,10 @@ public ClientDetails validate(ClientDetails prototype, boolean create, boolean c if (prototype instanceof ClientDetailsCreation) { ClientDetailsCreation clientDetailsCreation = (ClientDetailsCreation) prototype; if (StringUtils.hasText(clientDetailsCreation.getPrivateKeyUrl()) || StringUtils.hasText(clientDetailsCreation.getPrivateKeySet())) { - PrivateKeyJwtConfiguration privateKeyJwtConfiguration = PrivateKeyJwtConfiguration.parse(clientDetailsCreation.getPrivateKeyUrl(), + ClientJwtConfiguration clientJwtConfiguration = ClientJwtConfiguration.parse(clientDetailsCreation.getPrivateKeyUrl(), clientDetailsCreation.getPrivateKeySet()); - if (privateKeyJwtConfiguration != null) { - privateKeyJwtConfiguration.writeValue(client); + if (clientJwtConfiguration != null) { + clientJwtConfiguration.writeValue(client); } else { logger.warn("Client configuration with private_key_jwt not valid"); } diff --git a/server/src/main/java/org/cloudfoundry/identity/uaa/client/PrivateKeyJwtConfiguration.java b/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientJwtConfiguration.java similarity index 84% rename from server/src/main/java/org/cloudfoundry/identity/uaa/client/PrivateKeyJwtConfiguration.java rename to server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientJwtConfiguration.java index 6034d49d394..e3747319147 100644 --- a/server/src/main/java/org/cloudfoundry/identity/uaa/client/PrivateKeyJwtConfiguration.java +++ b/server/src/main/java/org/cloudfoundry/identity/uaa/client/ClientJwtConfiguration.java @@ -31,7 +31,7 @@ @JsonInclude(JsonInclude.Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) -public class PrivateKeyJwtConfiguration implements Cloneable{ +public class ClientJwtConfiguration implements Cloneable{ @JsonIgnore private static final int MAX_KEY_SIZE = 10; @@ -42,10 +42,10 @@ public class PrivateKeyJwtConfiguration implements Cloneable{ @JsonProperty("jwks") private JsonWebKeySet privateKeyJwt; - public PrivateKeyJwtConfiguration() { + public ClientJwtConfiguration() { } - public PrivateKeyJwtConfiguration(final String privateKeyJwtUrl, final JsonWebKeySet webKeySet) { + public ClientJwtConfiguration(final String privateKeyJwtUrl, final JsonWebKeySet webKeySet) { this.privateKeyJwtUrl = privateKeyJwtUrl; privateKeyJwt = webKeySet; if (privateKeyJwt != null) { @@ -74,8 +74,8 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - if (o instanceof PrivateKeyJwtConfiguration) { - PrivateKeyJwtConfiguration that = (PrivateKeyJwtConfiguration) o; + if (o instanceof ClientJwtConfiguration) { + ClientJwtConfiguration that = (ClientJwtConfiguration) o; if (!Objects.equals(privateKeyJwtUrl, that.privateKeyJwtUrl)) return false; if (privateKeyJwt != null && that.privateKeyJwt != null) { return privateKeyJwt.getKeys().equals(that.privateKeyJwt.getKeys()); @@ -115,7 +115,7 @@ public String getCleanString() { } @JsonIgnore - public static PrivateKeyJwtConfiguration parse(String privateKeyConfig) { + public static ClientJwtConfiguration parse(String privateKeyConfig) { if (UaaUrlUtils.isUrl(privateKeyConfig)) { return parse(privateKeyConfig, null); } else { @@ -124,11 +124,11 @@ public static PrivateKeyJwtConfiguration parse(String privateKeyConfig) { } @JsonIgnore - public static PrivateKeyJwtConfiguration parse(String privateKeyUrl, String privateKeyJwt) { - PrivateKeyJwtConfiguration privateKeyJwtConfiguration = null; + public static ClientJwtConfiguration parse(String privateKeyUrl, String privateKeyJwt) { + ClientJwtConfiguration clientJwtConfiguration = null; if (privateKeyUrl != null) { - privateKeyJwtConfiguration = new PrivateKeyJwtConfiguration(privateKeyUrl, null); - privateKeyJwtConfiguration.validateJwksUri(); + clientJwtConfiguration = new ClientJwtConfiguration(privateKeyUrl, null); + clientJwtConfiguration.validateJwksUri(); } else if (privateKeyJwt != null && privateKeyJwt.contains("{") && privateKeyJwt.contains("}")) { HashMap jsonMap = JsonUtils.readValue(privateKeyJwt, HashMap.class); String cleanJwtString; @@ -138,13 +138,13 @@ public static PrivateKeyJwtConfiguration parse(String privateKeyUrl, String priv } else { cleanJwtString = JWK.parse(jsonMap).toPublicJWK().toString(); } - privateKeyJwtConfiguration = new PrivateKeyJwtConfiguration(null, JsonWebKeyHelper.deserialize(cleanJwtString)); - privateKeyJwtConfiguration.validateJwkSet(); + clientJwtConfiguration = new ClientJwtConfiguration(null, JsonWebKeyHelper.deserialize(cleanJwtString)); + clientJwtConfiguration.validateJwkSet(); } catch (ParseException e) { throw new InvalidClientDetailsException("Client jwt configuration cannot be parsed", e); } } - return privateKeyJwtConfiguration; + return clientJwtConfiguration; } private boolean validateJwkSet() { @@ -192,13 +192,13 @@ private boolean validateJwksUri() { * @return */ @JsonIgnore - public static PrivateKeyJwtConfiguration readValue(ClientDetails clientDetails) { + public static ClientJwtConfiguration readValue(ClientDetails clientDetails) { if (clientDetails == null || clientDetails.getAdditionalInformation() == null || !(clientDetails.getAdditionalInformation().get(PRIVATE_KEY_CONFIG) instanceof String)) { return null; } - return JsonUtils.readValue((String) clientDetails.getAdditionalInformation().get(PRIVATE_KEY_CONFIG), PrivateKeyJwtConfiguration.class); + return JsonUtils.readValue((String) clientDetails.getAdditionalInformation().get(PRIVATE_KEY_CONFIG), ClientJwtConfiguration.class); } /** @@ -236,17 +236,17 @@ public static void resetConfiguration(ClientDetails clientDetails) { } @JsonIgnore - public static PrivateKeyJwtConfiguration merge(PrivateKeyJwtConfiguration existingConfig, PrivateKeyJwtConfiguration newConfig, boolean overwrite) { + public static ClientJwtConfiguration merge(ClientJwtConfiguration existingConfig, ClientJwtConfiguration newConfig, boolean overwrite) { if (existingConfig == null) { return newConfig; } if (newConfig == null) { return existingConfig; } - PrivateKeyJwtConfiguration result = null; + ClientJwtConfiguration result = null; if (newConfig.privateKeyJwtUrl != null) { if (overwrite) { - result = new PrivateKeyJwtConfiguration(newConfig.privateKeyJwtUrl, null); + result = new ClientJwtConfiguration(newConfig.privateKeyJwtUrl, null); } else { result = existingConfig; } @@ -254,7 +254,7 @@ public static PrivateKeyJwtConfiguration merge(PrivateKeyJwtConfiguration existi if (newConfig.privateKeyJwt != null) { if (existingConfig.privateKeyJwt == null) { if (overwrite) { - result = new PrivateKeyJwtConfiguration(null, newConfig.privateKeyJwt); + result = new ClientJwtConfiguration(null, newConfig.privateKeyJwt); } else { result = existingConfig; } @@ -273,28 +273,28 @@ public static PrivateKeyJwtConfiguration merge(PrivateKeyJwtConfiguration existi } }); existingKeys.addAll(newKeys); - result = new PrivateKeyJwtConfiguration(null, new JsonWebKeySet<>(existingKeys)); + result = new ClientJwtConfiguration(null, new JsonWebKeySet<>(existingKeys)); } } return result; } @JsonIgnore - public static PrivateKeyJwtConfiguration delete(PrivateKeyJwtConfiguration existingConfig, PrivateKeyJwtConfiguration tobeDeleted) { + public static ClientJwtConfiguration delete(ClientJwtConfiguration existingConfig, ClientJwtConfiguration tobeDeleted) { if (existingConfig == null) { return null; } if (tobeDeleted == null) { return existingConfig; } - PrivateKeyJwtConfiguration result = null; + ClientJwtConfiguration result = null; if (existingConfig.privateKeyJwt != null && tobeDeleted.privateKeyJwtUrl != null) { JsonWebKeySet existingKeySet = existingConfig.privateKeyJwt; List keys = existingKeySet.getKeys().stream().filter(k -> !tobeDeleted.privateKeyJwtUrl.equals(k.getKid())).collect(Collectors.toList()); if (keys.isEmpty()) { result = null; } else { - result = new PrivateKeyJwtConfiguration(null, new JsonWebKeySet<>(keys)); + result = new ClientJwtConfiguration(null, new JsonWebKeySet<>(keys)); } } else if (existingConfig.privateKeyJwt != null && tobeDeleted.privateKeyJwt != null) { List existingKeys = new ArrayList<>(existingConfig.getPrivateKeyJwt().getKeys()); @@ -302,7 +302,7 @@ public static PrivateKeyJwtConfiguration delete(PrivateKeyJwtConfiguration exist if (existingKeys.isEmpty()) { result = null; } else { - result = new PrivateKeyJwtConfiguration(null, new JsonWebKeySet<>(existingKeys)); + result = new ClientJwtConfiguration(null, new JsonWebKeySet<>(existingKeys)); } } else if (existingConfig.privateKeyJwtUrl != null && tobeDeleted.privateKeyJwtUrl != null) { if ("*".equals(tobeDeleted.privateKeyJwtUrl) || existingConfig.privateKeyJwtUrl.equals(tobeDeleted.privateKeyJwtUrl)) { diff --git a/server/src/main/java/org/cloudfoundry/identity/uaa/zone/MultitenantJdbcClientDetailsService.java b/server/src/main/java/org/cloudfoundry/identity/uaa/zone/MultitenantJdbcClientDetailsService.java index a17fdbc1471..0960f16f5e0 100644 --- a/server/src/main/java/org/cloudfoundry/identity/uaa/zone/MultitenantJdbcClientDetailsService.java +++ b/server/src/main/java/org/cloudfoundry/identity/uaa/zone/MultitenantJdbcClientDetailsService.java @@ -2,7 +2,7 @@ import org.cloudfoundry.identity.uaa.audit.event.SystemDeletable; import org.cloudfoundry.identity.uaa.authentication.UaaPrincipal; -import org.cloudfoundry.identity.uaa.client.PrivateKeyJwtConfiguration; +import org.cloudfoundry.identity.uaa.client.ClientJwtConfiguration; import org.cloudfoundry.identity.uaa.oauth.client.ClientConstants; import org.cloudfoundry.identity.uaa.resources.ResourceMonitor; import org.cloudfoundry.identity.uaa.security.ContextSensitiveOAuth2SecurityExpressionMethods; @@ -280,11 +280,11 @@ public void deleteClientSecret(String clientId, String zoneId) throws NoSuchClie @Override public void addClientKeyConfig(String clientId, String keyConfig, String zoneId, boolean overwrite) throws NoSuchClientException { - PrivateKeyJwtConfiguration privateKeyJwtConfiguration = PrivateKeyJwtConfiguration.parse(keyConfig); - if (privateKeyJwtConfiguration != null) { + ClientJwtConfiguration clientJwtConfiguration = ClientJwtConfiguration.parse(keyConfig); + if (clientJwtConfiguration != null) { BaseClientDetails clientDetails = (BaseClientDetails) loadClientByClientId(clientId, zoneId); - PrivateKeyJwtConfiguration existingConfig = PrivateKeyJwtConfiguration.readValue(clientDetails); - PrivateKeyJwtConfiguration result = PrivateKeyJwtConfiguration.merge(existingConfig, privateKeyJwtConfiguration, overwrite); + ClientJwtConfiguration existingConfig = ClientJwtConfiguration.readValue(clientDetails); + ClientJwtConfiguration result = ClientJwtConfiguration.merge(existingConfig, clientJwtConfiguration, overwrite); if (result != null) { result.writeValue(clientDetails); } @@ -294,19 +294,19 @@ public void addClientKeyConfig(String clientId, String keyConfig, String zoneId, @Override public void deleteClientKeyConfig(String clientId, String keyConfig, String zoneId) throws NoSuchClientException { - PrivateKeyJwtConfiguration privateKeyJwtConfiguration; + ClientJwtConfiguration clientJwtConfiguration; if(UaaUrlUtils.isUrl(keyConfig)) { - privateKeyJwtConfiguration = PrivateKeyJwtConfiguration.parse(keyConfig); + clientJwtConfiguration = ClientJwtConfiguration.parse(keyConfig); } else { - privateKeyJwtConfiguration = new PrivateKeyJwtConfiguration(keyConfig, null); + clientJwtConfiguration = new ClientJwtConfiguration(keyConfig, null); } - if (privateKeyJwtConfiguration != null) { + if (clientJwtConfiguration != null) { BaseClientDetails clientDetails = (BaseClientDetails) loadClientByClientId(clientId, zoneId); - PrivateKeyJwtConfiguration result = PrivateKeyJwtConfiguration.delete(PrivateKeyJwtConfiguration.readValue(clientDetails), privateKeyJwtConfiguration); + ClientJwtConfiguration result = ClientJwtConfiguration.delete(ClientJwtConfiguration.readValue(clientDetails), clientJwtConfiguration); if (result != null) { result.writeValue(clientDetails); } else { - PrivateKeyJwtConfiguration.resetConfiguration(clientDetails); + ClientJwtConfiguration.resetConfiguration(clientDetails); } updateClientDetails(clientDetails, zoneId); } diff --git a/server/src/test/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpointsTests.java b/server/src/test/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpointsTests.java index ac434921955..04c85b0ca88 100644 --- a/server/src/test/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpointsTests.java +++ b/server/src/test/java/org/cloudfoundry/identity/uaa/client/ClientAdminEndpointsTests.java @@ -1077,7 +1077,7 @@ void testCreateClientWithPrivateKeyUri() { ArgumentCaptor clientCaptor = ArgumentCaptor.forClass(BaseClientDetails.class); verify(clientDetailsService).create(clientCaptor.capture(), anyString()); BaseClientDetails created = clientCaptor.getValue(); - assertEquals(PrivateKeyJwtConfiguration.readValue(created), PrivateKeyJwtConfiguration.parse(jwksUri)); + assertEquals(ClientJwtConfiguration.readValue(created), ClientJwtConfiguration.parse(jwksUri)); } @Test @@ -1097,7 +1097,7 @@ void testCreateClientWithPrivateKeyUriInvalid() { ArgumentCaptor clientCaptor = ArgumentCaptor.forClass(BaseClientDetails.class); verify(clientDetailsService).create(clientCaptor.capture(), anyString()); BaseClientDetails created = clientCaptor.getValue(); - assertNull(PrivateKeyJwtConfiguration.readValue(created)); + assertNull(ClientJwtConfiguration.readValue(created)); } @Test @@ -1148,7 +1148,7 @@ void testChangeDeletePrivateKeyJwtConfigUri() { assertEquals("Client jwt configuration updated", result.getMessage()); verify(clientRegistrationService, times(1)).addClientKeyConfig(detail.getClientId(), jwksUri, IdentityZoneHolder.get().getId(), true); - PrivateKeyJwtConfiguration.parse(jwksUri).writeValue(detail); + ClientJwtConfiguration.parse(jwksUri).writeValue(detail); change.setChangeMode(ClientJwtChangeRequest.ChangeMode.DELETE); change.setKeyUrl(jwksUri); result = endpoints.changeClientJwt(detail.getClientId(), change); @@ -1176,10 +1176,10 @@ void testCreateClientWithPrivateKeySet() { ArgumentCaptor clientCaptor = ArgumentCaptor.forClass(BaseClientDetails.class); verify(clientDetailsService).create(clientCaptor.capture(), anyString()); BaseClientDetails created = clientCaptor.getValue(); - assertEquals(PrivateKeyJwtConfiguration.readValue(created), PrivateKeyJwtConfiguration.parse(jsonJwk)); - assertEquals(PrivateKeyJwtConfiguration.readValue(created), PrivateKeyJwtConfiguration.parse(jsonJwk2)); - assertEquals(PrivateKeyJwtConfiguration.readValue(created), PrivateKeyJwtConfiguration.parse(jsonJwkSet)); - assertNotEquals(PrivateKeyJwtConfiguration.readValue(created), PrivateKeyJwtConfiguration.parse(jsonJwk3)); + assertEquals(ClientJwtConfiguration.readValue(created), ClientJwtConfiguration.parse(jsonJwk)); + assertEquals(ClientJwtConfiguration.readValue(created), ClientJwtConfiguration.parse(jsonJwk2)); + assertEquals(ClientJwtConfiguration.readValue(created), ClientJwtConfiguration.parse(jsonJwkSet)); + assertNotEquals(ClientJwtConfiguration.readValue(created), ClientJwtConfiguration.parse(jsonJwk3)); } private ClientDetailsCreation createClientDetailsCreation(BaseClientDetails baseClientDetails) { diff --git a/server/src/test/java/org/cloudfoundry/identity/uaa/client/PrivateKeyJwtConfigurationTest.java b/server/src/test/java/org/cloudfoundry/identity/uaa/client/ClientJwtConfigurationTest.java similarity index 50% rename from server/src/test/java/org/cloudfoundry/identity/uaa/client/PrivateKeyJwtConfigurationTest.java rename to server/src/test/java/org/cloudfoundry/identity/uaa/client/ClientJwtConfigurationTest.java index d50c9497d7c..f7a22c77df7 100644 --- a/server/src/test/java/org/cloudfoundry/identity/uaa/client/PrivateKeyJwtConfigurationTest.java +++ b/server/src/test/java/org/cloudfoundry/identity/uaa/client/ClientJwtConfigurationTest.java @@ -22,7 +22,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -class PrivateKeyJwtConfigurationTest { +class ClientJwtConfigurationTest { private final String nValue = "u_A1S-WoVAnHlNQ_1HJmOPBVxIdy1uSNsp5JUF5N4KtOjir9EgG9HhCFRwz48ykEukrgaK4ofyy_wRXSUJKW7Q"; private final String jsonWebKey = "{\"kty\":\"RSA\",\"e\":\"AQAB\",\"kid\":\"key-1\",\"alg\":\"RS256\",\"n\":\"u_A1S-WoVAnHlNQ_1HJmOPBVxIdy1uSNsp5JUF5N4KtOjir9EgG9HhCFRwz48ykEukrgaK4ofyy_wRXSUJKW7Q\"}"; @@ -36,115 +36,115 @@ class PrivateKeyJwtConfigurationTest { @Test void testJwksValidity() { - assertNotNull(PrivateKeyJwtConfiguration.parse("https://any.domain.net/openid/jwks-uri")); - assertNotNull(PrivateKeyJwtConfiguration.parse("http://any.localhost/openid/jwks-uri")); + assertNotNull(ClientJwtConfiguration.parse("https://any.domain.net/openid/jwks-uri")); + assertNotNull(ClientJwtConfiguration.parse("http://any.localhost/openid/jwks-uri")); } @Test void testJwksInvalid() { - assertThrows(InvalidClientDetailsException.class, () -> PrivateKeyJwtConfiguration.parse("custom://any.domain.net/openid/jwks-uri", null)); - assertThrows(InvalidClientDetailsException.class, () -> PrivateKeyJwtConfiguration.parse("test", null)); - assertThrows(InvalidClientDetailsException.class, () -> PrivateKeyJwtConfiguration.parse("http://any.domain.net/openid/jwks-uri")); - assertThrows(InvalidClientDetailsException.class, () -> PrivateKeyJwtConfiguration.parse("https://")); - assertThrows(InvalidClientDetailsException.class, () -> PrivateKeyJwtConfiguration.parse("ftp://any.domain.net/openid/jwks-uri")); + assertThrows(InvalidClientDetailsException.class, () -> ClientJwtConfiguration.parse("custom://any.domain.net/openid/jwks-uri", null)); + assertThrows(InvalidClientDetailsException.class, () -> ClientJwtConfiguration.parse("test", null)); + assertThrows(InvalidClientDetailsException.class, () -> ClientJwtConfiguration.parse("http://any.domain.net/openid/jwks-uri")); + assertThrows(InvalidClientDetailsException.class, () -> ClientJwtConfiguration.parse("https://")); + assertThrows(InvalidClientDetailsException.class, () -> ClientJwtConfiguration.parse("ftp://any.domain.net/openid/jwks-uri")); } @Test void testJwkSetValidity() { - assertNotNull(PrivateKeyJwtConfiguration.parse(jsonWebKey)); - assertNotNull(PrivateKeyJwtConfiguration.parse(jsonJwkSet)); + assertNotNull(ClientJwtConfiguration.parse(jsonWebKey)); + assertNotNull(ClientJwtConfiguration.parse(jsonJwkSet)); } @Test void testJwkSetInvalid() { - assertThrows(InvalidClientDetailsException.class, () -> PrivateKeyJwtConfiguration.parse(jsonJwkSetEmtpy)); - assertThrows(InvalidClientDetailsException.class, () -> PrivateKeyJwtConfiguration.parse(jsonWebKeyNoId)); - assertThrows(InvalidClientDetailsException.class, () -> PrivateKeyJwtConfiguration.parse("{\"keys\": \"x\"}")); + assertThrows(InvalidClientDetailsException.class, () -> ClientJwtConfiguration.parse(jsonJwkSetEmtpy)); + assertThrows(InvalidClientDetailsException.class, () -> ClientJwtConfiguration.parse(jsonWebKeyNoId)); + assertThrows(InvalidClientDetailsException.class, () -> ClientJwtConfiguration.parse("{\"keys\": \"x\"}")); } @Test void testJwkSetInvalidSize() throws ParseException { - assertThrows(InvalidClientDetailsException.class, () -> new PrivateKeyJwtConfiguration(null, new JsonWebKeySet(Collections.emptyList()))); + assertThrows(InvalidClientDetailsException.class, () -> new ClientJwtConfiguration(null, new JsonWebKeySet(Collections.emptyList()))); } @Test void testGetCleanConfig() { - assertNotNull(PrivateKeyJwtConfiguration.parse("https://any.domain.net/openid/jwks-uri").getCleanString()); - assertNotNull(PrivateKeyJwtConfiguration.parse(jsonWebKey).getCleanString()); + assertNotNull(ClientJwtConfiguration.parse("https://any.domain.net/openid/jwks-uri").getCleanString()); + assertNotNull(ClientJwtConfiguration.parse(jsonWebKey).getCleanString()); } @Test void testGetCleanConfigInvalid() { JsonWebKeySet mockedKey = mock(JsonWebKeySet.class); - List keyList = PrivateKeyJwtConfiguration.parse(jsonJwkSet).getPrivateKeyJwt().getKeys(); + List keyList = ClientJwtConfiguration.parse(jsonJwkSet).getPrivateKeyJwt().getKeys(); when(mockedKey.getKeys()).thenReturn(keyList); - PrivateKeyJwtConfiguration privateKey = new PrivateKeyJwtConfiguration(null, mockedKey); + ClientJwtConfiguration privateKey = new ClientJwtConfiguration(null, mockedKey); when(mockedKey.getKeySetMap()).thenThrow(new IllegalStateException("error")); assertThrows(InvalidClientDetailsException.class, () -> privateKey.getCleanString()); - PrivateKeyJwtConfiguration privateKey2 = new PrivateKeyJwtConfiguration("hello", null); + ClientJwtConfiguration privateKey2 = new ClientJwtConfiguration("hello", null); assertNull(privateKey2.getCleanString()); } @Test void testJwtSetValidate() { JsonWebKeySet mockedKey = mock(JsonWebKeySet.class); - List keyList = PrivateKeyJwtConfiguration.parse(jsonJwkSet).getPrivateKeyJwt().getKeys(); + List keyList = ClientJwtConfiguration.parse(jsonJwkSet).getPrivateKeyJwt().getKeys(); when(mockedKey.getKeys()).thenReturn(Arrays.asList(keyList.get(0), keyList.get(0))); - assertThrows(InvalidClientDetailsException.class, () -> new PrivateKeyJwtConfiguration(null, mockedKey)); + assertThrows(InvalidClientDetailsException.class, () -> new ClientJwtConfiguration(null, mockedKey)); } @Test void testConfigMerge() { - PrivateKeyJwtConfiguration configuration = PrivateKeyJwtConfiguration.parse(jsonJwkSet); + ClientJwtConfiguration configuration = ClientJwtConfiguration.parse(jsonJwkSet); assertEquals(1, configuration.getPrivateKeyJwt().getKeys().size()); - PrivateKeyJwtConfiguration addKey = PrivateKeyJwtConfiguration.parse(jsonWebKey2); - configuration = PrivateKeyJwtConfiguration.merge(configuration, addKey, false); + ClientJwtConfiguration addKey = ClientJwtConfiguration.parse(jsonWebKey2); + configuration = ClientJwtConfiguration.merge(configuration, addKey, false); assertEquals(2, configuration.getPrivateKeyJwt().getKeys().size()); assertEquals(nValue, configuration.getPrivateKeyJwt().getKeys().get(0).getKeyProperties().get("n")); assertEquals(nValue, configuration.getPrivateKeyJwt().getKeys().get(1).getKeyProperties().get("n")); - configuration = PrivateKeyJwtConfiguration.merge(configuration, addKey, true); + configuration = ClientJwtConfiguration.merge(configuration, addKey, true); assertEquals(2, configuration.getPrivateKeyJwt().getKeys().size()); - configuration = PrivateKeyJwtConfiguration.parse(jsonJwkSet); + configuration = ClientJwtConfiguration.parse(jsonJwkSet); assertEquals(1, configuration.getPrivateKeyJwt().getKeys().size()); assertEquals(nValue, configuration.getPrivateKeyJwt().getKeys().get(0).getKeyProperties().get("n")); - configuration = PrivateKeyJwtConfiguration.merge(PrivateKeyJwtConfiguration.parse(jsonJwkSet), PrivateKeyJwtConfiguration.parse(jsonWebKeyDifferentValue), true); + configuration = ClientJwtConfiguration.merge(ClientJwtConfiguration.parse(jsonJwkSet), ClientJwtConfiguration.parse(jsonWebKeyDifferentValue), true); assertEquals(1, configuration.getPrivateKeyJwt().getKeys().size()); assertEquals("new", configuration.getPrivateKeyJwt().getKeys().get(0).getKeyProperties().get("n")); - configuration = PrivateKeyJwtConfiguration.merge(PrivateKeyJwtConfiguration.parse(jsonJwkSet), PrivateKeyJwtConfiguration.parse(jsonWebKeyDifferentValue), false); + configuration = ClientJwtConfiguration.merge(ClientJwtConfiguration.parse(jsonJwkSet), ClientJwtConfiguration.parse(jsonWebKeyDifferentValue), false); assertEquals(1, configuration.getPrivateKeyJwt().getKeys().size()); assertEquals(nValue, configuration.getPrivateKeyJwt().getKeys().get(0).getKeyProperties().get("n")); } @Test void testConfigMergeDifferentType() { - PrivateKeyJwtConfiguration configuration = PrivateKeyJwtConfiguration.parse(jsonJwkSet); + ClientJwtConfiguration configuration = ClientJwtConfiguration.parse(jsonJwkSet); assertEquals(1, configuration.getPrivateKeyJwt().getKeys().size()); assertNull(configuration.getPrivateKeyJwtUrl()); - configuration = PrivateKeyJwtConfiguration.merge(configuration, PrivateKeyJwtConfiguration.parse("https://any/jwks-uri"), false); + configuration = ClientJwtConfiguration.merge(configuration, ClientJwtConfiguration.parse("https://any/jwks-uri"), false); assertEquals(1, configuration.getPrivateKeyJwt().getKeys().size()); assertNull(configuration.getPrivateKeyJwtUrl()); - configuration = PrivateKeyJwtConfiguration.merge(configuration, PrivateKeyJwtConfiguration.parse("https://any/jwks-uri"), true); + configuration = ClientJwtConfiguration.merge(configuration, ClientJwtConfiguration.parse("https://any/jwks-uri"), true); assertNull(configuration.getPrivateKeyJwt()); assertNotNull(configuration.getPrivateKeyJwtUrl()); - configuration = PrivateKeyJwtConfiguration.merge(PrivateKeyJwtConfiguration.parse("https://any/jwks-uri"), PrivateKeyJwtConfiguration.parse("https://new/jwks-uri"), false); + configuration = ClientJwtConfiguration.merge(ClientJwtConfiguration.parse("https://any/jwks-uri"), ClientJwtConfiguration.parse("https://new/jwks-uri"), false); assertNull(configuration.getPrivateKeyJwt()); assertEquals("https://any/jwks-uri", configuration.getPrivateKeyJwtUrl()); - configuration = PrivateKeyJwtConfiguration.merge(PrivateKeyJwtConfiguration.parse("https://any/jwks-uri"), PrivateKeyJwtConfiguration.parse("https://new/jwks-uri"), true); + configuration = ClientJwtConfiguration.merge(ClientJwtConfiguration.parse("https://any/jwks-uri"), ClientJwtConfiguration.parse("https://new/jwks-uri"), true); assertNull(configuration.getPrivateKeyJwt()); assertEquals("https://new/jwks-uri", configuration.getPrivateKeyJwtUrl()); - configuration = PrivateKeyJwtConfiguration.merge(PrivateKeyJwtConfiguration.parse("https://any/jwks-uri"), PrivateKeyJwtConfiguration.parse(jsonJwkSet), false); + configuration = ClientJwtConfiguration.merge(ClientJwtConfiguration.parse("https://any/jwks-uri"), ClientJwtConfiguration.parse(jsonJwkSet), false); assertNull(configuration.getPrivateKeyJwt()); assertEquals("https://any/jwks-uri", configuration.getPrivateKeyJwtUrl()); - configuration = PrivateKeyJwtConfiguration.merge(PrivateKeyJwtConfiguration.parse("https://any/jwks-uri"), PrivateKeyJwtConfiguration.parse(jsonJwkSet), true); + configuration = ClientJwtConfiguration.merge(ClientJwtConfiguration.parse("https://any/jwks-uri"), ClientJwtConfiguration.parse(jsonJwkSet), true); assertNull(configuration.getPrivateKeyJwtUrl()); assertEquals(1, configuration.getPrivateKeyJwt().getKeys().size()); assertEquals(nValue, configuration.getPrivateKeyJwt().getKeys().get(0).getKeyProperties().get("n")); @@ -152,55 +152,55 @@ void testConfigMergeDifferentType() { @Test void testConfigMergeNulls() { - PrivateKeyJwtConfiguration configuration = PrivateKeyJwtConfiguration.parse(jsonJwkSet); - PrivateKeyJwtConfiguration existingKeyConfig = PrivateKeyJwtConfiguration.merge(configuration, null, true); + ClientJwtConfiguration configuration = ClientJwtConfiguration.parse(jsonJwkSet); + ClientJwtConfiguration existingKeyConfig = ClientJwtConfiguration.merge(configuration, null, true); assertTrue(configuration.equals(existingKeyConfig)); assertEquals(configuration, existingKeyConfig); - PrivateKeyJwtConfiguration newKeyConfig = PrivateKeyJwtConfiguration.parse("https://any/jwks-uri"); - configuration = PrivateKeyJwtConfiguration.merge(null, newKeyConfig, true); + ClientJwtConfiguration newKeyConfig = ClientJwtConfiguration.parse("https://any/jwks-uri"); + configuration = ClientJwtConfiguration.merge(null, newKeyConfig, true); assertTrue(configuration.equals(newKeyConfig)); assertTrue(configuration.equals(newKeyConfig)); } @Test void testConfigDelete() { - PrivateKeyJwtConfiguration configuration = PrivateKeyJwtConfiguration.parse(jsonJwkSet); + ClientJwtConfiguration configuration = ClientJwtConfiguration.parse(jsonJwkSet); assertEquals(1, configuration.getPrivateKeyJwt().getKeys().size()); assertNull(configuration.getPrivateKeyJwtUrl()); - PrivateKeyJwtConfiguration addKey = PrivateKeyJwtConfiguration.parse(jsonWebKey2); - configuration = PrivateKeyJwtConfiguration.merge(configuration, addKey, false); + ClientJwtConfiguration addKey = ClientJwtConfiguration.parse(jsonWebKey2); + configuration = ClientJwtConfiguration.merge(configuration, addKey, false); assertEquals(2, configuration.getPrivateKeyJwt().getKeys().size()); - configuration = PrivateKeyJwtConfiguration.delete(configuration, addKey); + configuration = ClientJwtConfiguration.delete(configuration, addKey); assertEquals(1, configuration.getPrivateKeyJwt().getKeys().size()); - configuration = PrivateKeyJwtConfiguration.delete(configuration, addKey); - configuration = PrivateKeyJwtConfiguration.delete(configuration, addKey); + configuration = ClientJwtConfiguration.delete(configuration, addKey); + configuration = ClientJwtConfiguration.delete(configuration, addKey); assertEquals(1, configuration.getPrivateKeyJwt().getKeys().size()); - configuration = PrivateKeyJwtConfiguration.merge(configuration, addKey, false); - configuration = PrivateKeyJwtConfiguration.delete(configuration, addKey); + configuration = ClientJwtConfiguration.merge(configuration, addKey, false); + configuration = ClientJwtConfiguration.delete(configuration, addKey); assertEquals(1, configuration.getPrivateKeyJwt().getKeys().size()); - configuration = PrivateKeyJwtConfiguration.merge(configuration, addKey, false); - configuration = PrivateKeyJwtConfiguration.delete(configuration, new PrivateKeyJwtConfiguration("key-2", null)); - configuration = PrivateKeyJwtConfiguration.delete(configuration, new PrivateKeyJwtConfiguration("key-1", null)); + configuration = ClientJwtConfiguration.merge(configuration, addKey, false); + configuration = ClientJwtConfiguration.delete(configuration, new ClientJwtConfiguration("key-2", null)); + configuration = ClientJwtConfiguration.delete(configuration, new ClientJwtConfiguration("key-1", null)); assertNull(configuration); - configuration = PrivateKeyJwtConfiguration.delete(PrivateKeyJwtConfiguration.parse(jsonJwkSet), PrivateKeyJwtConfiguration.parse(jsonWebKey)); + configuration = ClientJwtConfiguration.delete(ClientJwtConfiguration.parse(jsonJwkSet), ClientJwtConfiguration.parse(jsonWebKey)); assertNull(configuration); - configuration = PrivateKeyJwtConfiguration.delete(PrivateKeyJwtConfiguration.parse("https://any/jwks-uri"), PrivateKeyJwtConfiguration.parse("https://any/jwks-uri")); + configuration = ClientJwtConfiguration.delete(ClientJwtConfiguration.parse("https://any/jwks-uri"), ClientJwtConfiguration.parse("https://any/jwks-uri")); assertNull(configuration); - configuration = PrivateKeyJwtConfiguration.delete(PrivateKeyJwtConfiguration.parse("https://any/jwks-uri"), PrivateKeyJwtConfiguration.parse("https://other/jwks-uri")); + configuration = ClientJwtConfiguration.delete(ClientJwtConfiguration.parse("https://any/jwks-uri"), ClientJwtConfiguration.parse("https://other/jwks-uri")); assertNotNull(configuration); } @Test void testConfigDeleteNull() { - assertNull(PrivateKeyJwtConfiguration.delete(null, PrivateKeyJwtConfiguration.parse("https://other/jwks-uri"))); - assertNotNull(PrivateKeyJwtConfiguration.delete(PrivateKeyJwtConfiguration.parse("https://any/jwks-uri"), null)); + assertNull(ClientJwtConfiguration.delete(null, ClientJwtConfiguration.parse("https://other/jwks-uri"))); + assertNotNull(ClientJwtConfiguration.delete(ClientJwtConfiguration.parse("https://any/jwks-uri"), null)); } @Test void testHashCode() { - PrivateKeyJwtConfiguration key1 = PrivateKeyJwtConfiguration.parse("http://localhost:8080/uaa"); - PrivateKeyJwtConfiguration key2 = PrivateKeyJwtConfiguration.parse("http://localhost:8080/uaa"); + ClientJwtConfiguration key1 = ClientJwtConfiguration.parse("http://localhost:8080/uaa"); + ClientJwtConfiguration key2 = ClientJwtConfiguration.parse("http://localhost:8080/uaa"); assertNotEquals(key1.hashCode(), key2.hashCode()); assertEquals(key1.hashCode(), key1.hashCode()); assertEquals(key2.hashCode(), key2.hashCode()); @@ -208,39 +208,39 @@ void testHashCode() { @Test void testEquals() throws CloneNotSupportedException { - PrivateKeyJwtConfiguration key1 = PrivateKeyJwtConfiguration.parse("http://localhost:8080/uaa"); - PrivateKeyJwtConfiguration key2 = (PrivateKeyJwtConfiguration) key1.clone(); + ClientJwtConfiguration key1 = ClientJwtConfiguration.parse("http://localhost:8080/uaa"); + ClientJwtConfiguration key2 = (ClientJwtConfiguration) key1.clone(); assertEquals(key1, key2); } @Test void testSerializableObjectCalls() throws CloneNotSupportedException { - PrivateKeyJwtConfiguration key1 = JsonUtils.readValue(defaultJsonUri, PrivateKeyJwtConfiguration.class); - PrivateKeyJwtConfiguration key2 = (PrivateKeyJwtConfiguration) key1.clone(); + ClientJwtConfiguration key1 = JsonUtils.readValue(defaultJsonUri, ClientJwtConfiguration.class); + ClientJwtConfiguration key2 = (ClientJwtConfiguration) key1.clone(); assertEquals(key1, key2); - key1 = JsonUtils.readValue(defaultJsonKey, PrivateKeyJwtConfiguration.class); - key2 = (PrivateKeyJwtConfiguration) key1.clone(); + key1 = JsonUtils.readValue(defaultJsonKey, ClientJwtConfiguration.class); + key2 = (ClientJwtConfiguration) key1.clone(); assertEquals(key1, key2); } @Test void testConfiguration() { - PrivateKeyJwtConfiguration configUri = JsonUtils.readValue(defaultJsonUri, PrivateKeyJwtConfiguration.class); - PrivateKeyJwtConfiguration configKey = JsonUtils.readValue(defaultJsonKey, PrivateKeyJwtConfiguration.class); + ClientJwtConfiguration configUri = JsonUtils.readValue(defaultJsonUri, ClientJwtConfiguration.class); + ClientJwtConfiguration configKey = JsonUtils.readValue(defaultJsonKey, ClientJwtConfiguration.class); BaseClientDetails baseClientDetails = new BaseClientDetails(); HashMap additionalInformation = new HashMap<>(); additionalInformation.put(ClientConstants.PRIVATE_KEY_CONFIG, configUri); baseClientDetails.setAdditionalInformation(additionalInformation); configUri.writeValue(baseClientDetails); - PrivateKeyJwtConfiguration readUriConfig = PrivateKeyJwtConfiguration.readValue(baseClientDetails); + ClientJwtConfiguration readUriConfig = ClientJwtConfiguration.readValue(baseClientDetails); assertEquals(configUri, readUriConfig); - PrivateKeyJwtConfiguration.resetConfiguration(baseClientDetails); - assertNull(PrivateKeyJwtConfiguration.readValue(baseClientDetails)); + ClientJwtConfiguration.resetConfiguration(baseClientDetails); + assertNull(ClientJwtConfiguration.readValue(baseClientDetails)); configKey.writeValue(baseClientDetails); - PrivateKeyJwtConfiguration readKeyConfig = PrivateKeyJwtConfiguration.readValue(baseClientDetails); + ClientJwtConfiguration readKeyConfig = ClientJwtConfiguration.readValue(baseClientDetails); assertEquals(configKey, readKeyConfig); } }