This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new 19dbfb211c [SYNCOPE-1955] Fixing column size issues for MySQL and
MariaDB
19dbfb211c is described below
commit 19dbfb211cbf8bc012261ce8dc388e6f450e098d
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Fri Mar 13 14:14:38 2026 +0100
[SYNCOPE-1955] Fixing column size issues for MySQL and MariaDB
---
.../client/console/panels/JWKSGenerationPanel.java | 2 ++
.../org/apache/syncope/client/console/panels/OIDC.java | 5 +++--
.../core/persistence/api/entity/am/OIDCOpEntity.java | 4 ++--
.../core/persistence/jpa/entity/am/JPAOIDCOpEntity.java | 12 +++++++-----
.../persistence/jpa/entity/am/JPASAML2IdPEntity.java | 3 ++-
.../core/persistence/jpa/inner/OIDCOpEntityTest.java | 3 ++-
.../persistence/neo4j/entity/am/Neo4jOIDCOpEntity.java | 9 +++++----
.../core/persistence/neo4j/inner/OIDCOpEntityTest.java | 3 ++-
.../provisioning/api/data/OIDCOpEntityDataBinder.java | 2 +-
.../java/data/OIDCOpEntityDataBinderImpl.java | 17 ++++++++++-------
10 files changed, 36 insertions(+), 24 deletions(-)
diff --git
a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/JWKSGenerationPanel.java
b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/JWKSGenerationPanel.java
index e59033a110..e15fa39c7d 100644
---
a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/JWKSGenerationPanel.java
+++
b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/JWKSGenerationPanel.java
@@ -78,6 +78,8 @@ public class JWKSGenerationPanel extends
AbstractModalPanel<OIDCOpEntityTO> {
try {
jwksKeySizeM.setObject(Integer.valueOf(
waConfigRestClient.get("cas.authn.oidc.jwks.core.jwks-key-size").getValues().getFirst()));
+ } catch (NumberFormatException e) {
+ LOG.error("Incorrect key size specified: {}, reverting to {}",
jwksKeySizeM.getObject(), e);
} catch (SyncopeClientException e) {
LOG.error("While reading cas.authn.oidc.jwks.core.jwks-key-size",
e);
}
diff --git
a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/OIDC.java
b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/OIDC.java
index 6e62635f7d..31f9d1c9a5 100644
---
a/client/am/console/src/main/java/org/apache/syncope/client/console/panels/OIDC.java
+++
b/client/am/console/src/main/java/org/apache/syncope/client/console/panels/OIDC.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.console.panels;
import com.fasterxml.jackson.databind.json.JsonMapper;
import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
import java.io.IOException;
+import java.util.Base64;
import java.util.Optional;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.syncope.client.console.SyncopeConsoleSession;
@@ -103,8 +104,8 @@ public class OIDC extends Panel {
String pretty = null;
if (oidcOpEntity.get() != null) {
try {
- pretty = MAPPER.writerWithDefaultPrettyPrinter().
-
writeValueAsString(MAPPER.readTree(oidcOpEntity.get().getJWKS()));
+ pretty =
MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(
+
MAPPER.readTree(Base64.getDecoder().decode(oidcOpEntity.get().getJWKS())));
} catch (IOException e) {
LOG.error("Could not pretty-print", e);
pretty =
Optional.ofNullable(oidcOpEntity.get()).map(OIDCOpEntityTO::getJWKS).orElse(null);
diff --git
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/am/OIDCOpEntity.java
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/am/OIDCOpEntity.java
index c5aa01e3a8..e66e26e579 100644
---
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/am/OIDCOpEntity.java
+++
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/am/OIDCOpEntity.java
@@ -24,9 +24,9 @@ import org.apache.syncope.core.persistence.api.entity.Entity;
public interface OIDCOpEntity extends Entity {
- String getJWKS();
+ byte[] getJWKS();
- void setJWKS(String jwks);
+ void setJWKS(byte[] jwks);
Map<String, Set<String>> getCustomScopes();
}
diff --git
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPAOIDCOpEntity.java
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPAOIDCOpEntity.java
index 2df0ae1fed..b452a00305 100644
---
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPAOIDCOpEntity.java
+++
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPAOIDCOpEntity.java
@@ -26,9 +26,11 @@ import jakarta.persistence.Table;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.syncope.core.persistence.api.entity.am.OIDCOpEntity;
import
org.apache.syncope.core.persistence.jpa.converters.String2SetOfStringMapConverter;
import
org.apache.syncope.core.persistence.jpa.entity.AbstractGeneratedKeyEntity;
+import org.hibernate.Length;
@Entity
@Table(name = JPAOIDCOpEntity.TABLE)
@@ -38,22 +40,22 @@ public class JPAOIDCOpEntity extends
AbstractGeneratedKeyEntity implements OIDCO
public static final String TABLE = "OIDCOpEntity";
- @Column(nullable = false)
+ @Column(nullable = false, length = Length.LONG16)
@Lob
- private String jwks;
+ private byte[] jwks;
@Convert(converter = String2SetOfStringMapConverter.class)
@Lob
private Map<String, Set<String>> customScopes = new HashMap<>();
@Override
- public String getJWKS() {
+ public byte[] getJWKS() {
return jwks;
}
@Override
- public void setJWKS(final String jwks) {
- this.jwks = jwks;
+ public void setJWKS(final byte[] jwks) {
+ this.jwks = ArrayUtils.clone(jwks);
}
@Override
diff --git
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPASAML2IdPEntity.java
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPASAML2IdPEntity.java
index 8c7ee55ef6..e2f05cffb3 100644
---
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPASAML2IdPEntity.java
+++
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPASAML2IdPEntity.java
@@ -25,6 +25,7 @@ import jakarta.persistence.Table;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.syncope.core.persistence.api.entity.am.SAML2IdPEntity;
import
org.apache.syncope.core.persistence.jpa.entity.AbstractProvidedKeyEntity;
+import org.hibernate.Length;
@Entity
@Table(name = JPASAML2IdPEntity.TABLE)
@@ -34,7 +35,7 @@ public class JPASAML2IdPEntity extends
AbstractProvidedKeyEntity implements SAML
private static final long serialVersionUID = 57352617217394093L;
- @Column(nullable = false)
+ @Column(nullable = false, length = Length.LONG16)
@Lob
private byte[] metadata;
diff --git
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCOpEntityTest.java
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCOpEntityTest.java
index 515b8390d7..83ff443b5b 100644
---
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCOpEntityTest.java
+++
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCOpEntityTest.java
@@ -25,6 +25,7 @@ import com.nimbusds.jose.jwk.JWKSet;
import com.nimbusds.jose.jwk.KeyUse;
import com.nimbusds.jose.jwk.RSAKey;
import com.nimbusds.jose.jwk.gen.RSAKeyGenerator;
+import java.nio.charset.StandardCharsets;
import java.util.Set;
import java.util.UUID;
import org.apache.syncope.core.persistence.api.dao.OIDCOpEntityDAO;
@@ -48,7 +49,7 @@ public class OIDCOpEntityTest extends AbstractTest {
keyUse(KeyUse.SIGNATURE).
keyID(UUID.randomUUID().toString()).
generate();
- oidcOpEntity.setJWKS(new JWKSet(jwk).toString());
+ oidcOpEntity.setJWKS(new
JWKSet(jwk).toString().getBytes(StandardCharsets.UTF_8));
oidcOpEntity.getCustomScopes().put("scope1", Set.of("claim1",
"claim2"));
oidcOpEntity.getCustomScopes().put("scope2", Set.of("claim1",
"claim3", "claim4"));
diff --git
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/entity/am/Neo4jOIDCOpEntity.java
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/entity/am/Neo4jOIDCOpEntity.java
index de18a94dee..fcf53736dd 100644
---
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/entity/am/Neo4jOIDCOpEntity.java
+++
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/entity/am/Neo4jOIDCOpEntity.java
@@ -22,6 +22,7 @@ import jakarta.validation.constraints.NotNull;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.syncope.core.persistence.api.entity.am.OIDCOpEntity;
import
org.apache.syncope.core.persistence.neo4j.entity.AbstractGeneratedKeyNode;
import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
@@ -42,7 +43,7 @@ public class Neo4jOIDCOpEntity extends
AbstractGeneratedKeyNode implements OIDCO
};
@NotNull
- private String jwks;
+ private byte[] jwks;
private String customScopes;
@@ -50,13 +51,13 @@ public class Neo4jOIDCOpEntity extends
AbstractGeneratedKeyNode implements OIDCO
private Map<String, Set<String>> customScopesMap = new HashMap<>();
@Override
- public String getJWKS() {
+ public byte[] getJWKS() {
return jwks;
}
@Override
- public void setJWKS(final String jwks) {
- this.jwks = jwks;
+ public void setJWKS(final byte[] jwks) {
+ this.jwks = ArrayUtils.clone(jwks);
}
@Override
diff --git
a/core/persistence-neo4j/src/test/java/org/apache/syncope/core/persistence/neo4j/inner/OIDCOpEntityTest.java
b/core/persistence-neo4j/src/test/java/org/apache/syncope/core/persistence/neo4j/inner/OIDCOpEntityTest.java
index ec88cfc591..6fd036d0a4 100644
---
a/core/persistence-neo4j/src/test/java/org/apache/syncope/core/persistence/neo4j/inner/OIDCOpEntityTest.java
+++
b/core/persistence-neo4j/src/test/java/org/apache/syncope/core/persistence/neo4j/inner/OIDCOpEntityTest.java
@@ -25,6 +25,7 @@ import com.nimbusds.jose.jwk.JWKSet;
import com.nimbusds.jose.jwk.KeyUse;
import com.nimbusds.jose.jwk.RSAKey;
import com.nimbusds.jose.jwk.gen.RSAKeyGenerator;
+import java.nio.charset.StandardCharsets;
import java.util.Set;
import java.util.UUID;
import org.apache.syncope.core.persistence.api.dao.OIDCOpEntityDAO;
@@ -48,7 +49,7 @@ public class OIDCOpEntityTest extends AbstractTest {
keyUse(KeyUse.SIGNATURE).
keyID(UUID.randomUUID().toString()).
generate();
- oidcOpEntity.setJWKS(new JWKSet(jwk).toString());
+ oidcOpEntity.setJWKS(new
JWKSet(jwk).toString().getBytes(StandardCharsets.UTF_8));
oidcOpEntity.getCustomScopes().put("scope1", Set.of("claim1",
"claim2"));
oidcOpEntity.getCustomScopes().put("scope2", Set.of("claim1",
"claim3", "claim4"));
diff --git
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/OIDCOpEntityDataBinder.java
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/OIDCOpEntityDataBinder.java
index 20e9479e48..a2ac8530a7 100644
---
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/OIDCOpEntityDataBinder.java
+++
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/OIDCOpEntityDataBinder.java
@@ -53,7 +53,7 @@ public interface OIDCOpEntityDataBinder {
}
}
- String generateJWKS(String jwksKeyId, String jwksType, int jwksKeySize);
+ byte[] generateJWKS(String jwksKeyId, String jwksType, int jwksKeySize);
OIDCOpEntityTO getOIDCOpEntityTO(OIDCOpEntity oidcOpEntity);
diff --git
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCOpEntityDataBinderImpl.java
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCOpEntityDataBinderImpl.java
index 732d22946b..8dcd0cfb1c 100644
---
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCOpEntityDataBinderImpl.java
+++
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCOpEntityDataBinderImpl.java
@@ -18,7 +18,9 @@
*/
package org.apache.syncope.core.provisioning.java.data;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.Base64;
import java.util.List;
import java.util.Locale;
import org.apache.syncope.common.lib.SyncopeClientException;
@@ -94,7 +96,7 @@ public class OIDCOpEntityDataBinderImpl implements
OIDCOpEntityDataBinder {
}
@Override
- public String generateJWKS(final String jwksKeyId, final String jwksType,
final int jwksKeySize) {
+ public byte[] generateJWKS(final String jwksKeyId, final String jwksType,
final int jwksKeySize) {
List<PublicJsonWebKey> keys = new ArrayList<>();
try {
keys.add(generate(jwksKeyId, jwksType, jwksKeySize, Use.SIGNATURE,
JsonWebKeyLifecycleState.CURRENT));
@@ -124,14 +126,16 @@ public class OIDCOpEntityDataBinderImpl implements
OIDCOpEntityDataBinder {
jwksKeySizeConfig.setValues(List.of(String.valueOf(jwksKeySize)));
waConfigDAO.save(jwksKeySizeConfig);
- return new
JsonWebKeySet(keys).toJson(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE);
+ return new JsonWebKeySet(keys).
+ toJson(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE).
+ getBytes(StandardCharsets.UTF_8);
}
@Override
public OIDCOpEntityTO getOIDCOpEntityTO(final OIDCOpEntity oidcOpEntity) {
OIDCOpEntityTO oidcOpEntityTO = new OIDCOpEntityTO();
oidcOpEntityTO.setKey(oidcOpEntity.getKey());
- oidcOpEntityTO.setJWKS(oidcOpEntity.getJWKS());
+
oidcOpEntityTO.setJWKS(Base64.getEncoder().encodeToString(oidcOpEntity.getJWKS()));
oidcOpEntityTO.getCustomScopes().putAll(oidcOpEntity.getCustomScopes());
return oidcOpEntityTO;
@@ -139,10 +143,9 @@ public class OIDCOpEntityDataBinderImpl implements
OIDCOpEntityDataBinder {
@Override
public void update(final OIDCOpEntity oidcOpEntity, final OIDCOpEntityTO
oidcOpEntityTO) {
- oidcOpEntity.setJWKS(oidcOpEntityTO.getJWKS());
- if (oidcOpEntity.getJWKS() == null) {
- oidcOpEntity.setJWKS(generateJWKS("syncope", "RSA", 2048));
- }
+ oidcOpEntity.setJWKS(oidcOpEntityTO.getJWKS() == null
+ ? generateJWKS("syncope", "RSA", 2048)
+ : Base64.getDecoder().decode(oidcOpEntityTO.getJWKS()));
oidcOpEntity.getCustomScopes().clear();
oidcOpEntity.getCustomScopes().putAll(oidcOpEntityTO.getCustomScopes());