You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2017/08/23 08:54:47 UTC
syncope git commit: [SYNCOPE-938] Replacing commons-codec features
with standard JDK counterparts
Repository: syncope
Updated Branches:
refs/heads/master 48b200244 -> 8776551b7
[SYNCOPE-938] Replacing commons-codec features with standard JDK counterparts
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/8776551b
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/8776551b
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/8776551b
Branch: refs/heads/master
Commit: 8776551b7041ffd06aa9d2dbc3b577b386fb1dc4
Parents: 48b2002
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Aug 23 10:54:38 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Aug 23 10:54:38 2017 +0200
----------------------------------------------------------------------
.../client/enduser/resources/InfoResource.java | 4 +--
.../client/enduser/util/SaltGenerator.java | 15 ++++++--
client/lib/pom.xml | 5 ---
core/persistence-jpa/pom.xml | 4 ---
.../jpa/content/ContentLoaderHandler.java | 11 +++---
.../jpa/content/XMLContentExporter.java | 6 ++--
.../jpa/entity/AbstractPlainAttrValue.java | 24 ++++++-------
.../persistence/jpa/inner/PlainAttrTest.java | 4 +--
.../serialization/AttributeDeserializer.java | 8 ++---
.../api/serialization/AttributeSerializer.java | 7 ++--
.../GuardedStringDeserializer.java | 4 +--
.../serialization/GuardedStringSerializer.java | 4 +--
.../serialization/SyncTokenDeserializer.java | 20 +++++------
.../api/serialization/SyncTokenSerializer.java | 4 +--
.../LDAPPasswordPropagationActions.java | 8 ++---
.../java/pushpull/LDAPPasswordPullActions.java | 9 +++--
.../syncope/core/spring/security/Encryptor.java | 6 ++--
.../java/AbstractUserWorkflowAdapter.java | 11 +++---
.../java/data/SAML2IdPDataBinderImpl.java | 15 ++++----
.../apache/syncope/fit/core/SAML2ITCase.java | 12 ++++---
.../syncope/fit/core/UserIssuesITCase.java | 36 +++++++++++---------
installer/pom.xml | 4 ---
.../installer/utilities/PasswordGenerator.java | 4 +--
installer/src/main/resources/izpack/install.xml | 1 -
pom.xml | 6 ----
25 files changed, 114 insertions(+), 118 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/InfoResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/InfoResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/InfoResource.java
index 23af8fc..24b90a0 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/InfoResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/InfoResource.java
@@ -53,8 +53,8 @@ public class InfoResource extends BaseResource {
sessionCookieUtils.getCookie(SyncopeEnduserConstants.XSRF_COOKIE).getValue()))) {
LOG.debug("Set XSRF-TOKEN cookie");
SyncopeEnduserSession.get().setXsrfTokenGenerated(true);
- sessionCookieUtils.save(SyncopeEnduserConstants.XSRF_COOKIE, SaltGenerator.generate(
- SyncopeEnduserSession.get().getId()));
+ sessionCookieUtils.save(SyncopeEnduserConstants.XSRF_COOKIE,
+ SaltGenerator.generate(SyncopeEnduserSession.get().getId()));
}
response.setTextEncoding(StandardCharsets.UTF_8.name());
response.setWriteCallback(new WriteCallback() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/SaltGenerator.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/SaltGenerator.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/SaltGenerator.java
index 19896b4..d1ab28e 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/SaltGenerator.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/SaltGenerator.java
@@ -18,9 +18,11 @@
*/
package org.apache.syncope.client.enduser.util;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
+import javax.xml.bind.DatatypeConverter;
import org.apache.wicket.util.crypt.Base64;
-import org.apache.commons.codec.digest.DigestUtils;
public final class SaltGenerator {
@@ -29,8 +31,15 @@ public final class SaltGenerator {
byte[] salt = new byte[16];
// fill array with random bytes
new SecureRandom().nextBytes(salt);
- // create digest with MD5
- return DigestUtils.md2Hex(input + Base64.encodeBase64String(salt));
+ // create digest with MD2
+ MessageDigest md;
+ try {
+ md = MessageDigest.getInstance("MD2");
+ return DatatypeConverter.printHexBinary(
+ md.digest((input + Base64.encodeBase64String(salt)).getBytes()));
+ } catch (final NoSuchAlgorithmException e) {
+ throw new IllegalArgumentException(e);
+ }
}
private SaltGenerator() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/client/lib/pom.xml
----------------------------------------------------------------------
diff --git a/client/lib/pom.xml b/client/lib/pom.xml
index f682e45..ce70fc4 100644
--- a/client/lib/pom.xml
+++ b/client/lib/pom.xml
@@ -60,11 +60,6 @@ under the License.
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</dependency>
-
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- </dependency>
<dependency>
<groupId>joda-time</groupId>
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/pom.xml b/core/persistence-jpa/pom.xml
index 9b2a5e4..b99e77c 100644
--- a/core/persistence-jpa/pom.xml
+++ b/core/persistence-jpa/pom.xml
@@ -89,10 +89,6 @@ under the License.
</dependency>
<dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- </dependency>
- <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-jexl3</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/ContentLoaderHandler.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/ContentLoaderHandler.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/ContentLoaderHandler.java
index 0786351..72f5967 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/ContentLoaderHandler.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/ContentLoaderHandler.java
@@ -24,8 +24,7 @@ import java.text.ParseException;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
-import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.binary.Hex;
+import javax.xml.bind.DatatypeConverter;
import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -138,16 +137,16 @@ public class ContentLoaderHandler extends DefaultHandler {
case Types.VARBINARY:
case Types.LONGVARBINARY:
try {
- parameters[i] = Hex.decodeHex(attrs.getValue(i).toCharArray());
- } catch (DecoderException | IllegalArgumentException e) {
+ parameters[i] = DatatypeConverter.parseHexBinary(attrs.getValue(i));
+ } catch (IllegalArgumentException e) {
parameters[i] = attrs.getValue(i);
}
break;
case Types.BLOB:
try {
- parameters[i] = Hex.decodeHex(attrs.getValue(i).toCharArray());
- } catch (DecoderException | IllegalArgumentException e) {
+ parameters[i] = DatatypeConverter.parseHexBinary(attrs.getValue(i));
+ } catch (IllegalArgumentException e) {
LOG.warn("Error decoding hex string to specify a blob parameter", e);
parameters[i] = attrs.getValue(i);
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
index c2adeea..6ff27ab 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
@@ -42,6 +42,7 @@ import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.sql.DataSource;
+import javax.xml.bind.DatatypeConverter;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
@@ -69,7 +70,6 @@ import org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrValue;
import org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship;
import org.apache.syncope.core.persistence.jpa.entity.user.JPAUser;
import org.springframework.jdbc.datasource.DataSourceUtils;
-import org.springframework.security.crypto.codec.Hex;
import org.springframework.stereotype.Component;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
@@ -181,14 +181,14 @@ public class XMLContentExporter extends AbstractContentDealer implements Content
case Types.LONGVARBINARY:
final InputStream is = rs.getBinaryStream(columnName);
if (is != null) {
- res = new String(Hex.encode(IOUtils.toByteArray(is)));
+ res = DatatypeConverter.printHexBinary(IOUtils.toByteArray(is));
}
break;
case Types.BLOB:
final Blob blob = rs.getBlob(columnName);
if (blob != null) {
- res = new String(Hex.encode(IOUtils.toByteArray(blob.getBinaryStream())));
+ res = DatatypeConverter.printHexBinary(IOUtils.toByteArray(blob.getBinaryStream()));
}
break;
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttrValue.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttrValue.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttrValue.java
index bac48c6..9e32d02 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttrValue.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttrValue.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.core.persistence.jpa.entity;
+import java.util.Base64;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Lob;
@@ -26,7 +27,6 @@ import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
-import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
@@ -188,7 +188,7 @@ public abstract class AbstractPlainAttrValue extends AbstractGeneratedKeyEntity
break;
case Binary:
- this.setBinaryValue(Base64.decodeBase64(value));
+ this.setBinaryValue(Base64.getMimeDecoder().decode(value));
break;
case String:
@@ -223,8 +223,8 @@ public abstract class AbstractPlainAttrValue extends AbstractGeneratedKeyEntity
public String getValueAsString() {
final AttrSchemaType type = getAttr() == null || getAttr().getSchema() == null
|| getAttr().getSchema().getType() == null
- ? AttrSchemaType.String
- : getAttr().getSchema().getType();
+ ? AttrSchemaType.String
+ : getAttr().getSchema().getType();
return getValueAsString(type);
}
@@ -241,27 +241,27 @@ public abstract class AbstractPlainAttrValue extends AbstractGeneratedKeyEntity
case Long:
result = getAttr() == null || getAttr().getSchema() == null
|| getAttr().getSchema().getConversionPattern() == null
- ? getLongValue().toString()
- : FormatUtils.format(getLongValue(), getAttr().getSchema().getConversionPattern());
+ ? getLongValue().toString()
+ : FormatUtils.format(getLongValue(), getAttr().getSchema().getConversionPattern());
break;
case Double:
result = getAttr() == null || getAttr().getSchema() == null
|| getAttr().getSchema().getConversionPattern() == null
- ? getDoubleValue().toString()
- : FormatUtils.format(getDoubleValue(), getAttr().getSchema().getConversionPattern());
+ ? getDoubleValue().toString()
+ : FormatUtils.format(getDoubleValue(), getAttr().getSchema().getConversionPattern());
break;
case Date:
result = getAttr() == null || getAttr().getSchema() == null
|| getAttr().getSchema().getConversionPattern() == null
- ? FormatUtils.format(getDateValue())
- : FormatUtils.format(
- getDateValue(), false, getAttr().getSchema().getConversionPattern());
+ ? FormatUtils.format(getDateValue())
+ : FormatUtils.format(
+ getDateValue(), false, getAttr().getSchema().getConversionPattern());
break;
case Binary:
- result = Base64.encodeBase64String(getBinaryValue());
+ result = new String(Base64.getMimeEncoder().encode(getBinaryValue()));
break;
case String:
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainAttrTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainAttrTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainAttrTest.java
index c80caaf..9b79f44 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainAttrTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainAttrTest.java
@@ -27,6 +27,7 @@ import static org.junit.Assert.fail;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
+import java.util.Base64;
import java.util.Random;
import javax.validation.ValidationException;
import org.apache.syncope.common.lib.types.AnyTypeKind;
@@ -43,7 +44,6 @@ import org.apache.syncope.core.spring.security.Encryptor;
import org.apache.syncope.core.persistence.api.entity.PlainSchema;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.crypto.codec.Base64;
import org.springframework.transaction.annotation.Transactional;
@Transactional("Master")
@@ -207,7 +207,7 @@ public class PlainAttrTest extends AbstractTest {
byte[] bytes = new byte[20];
new Random().nextBytes(bytes);
- String photoB64Value = new String(Base64.encode(bytes), StandardCharsets.UTF_8);
+ String photoB64Value = new String(Base64.getMimeEncoder().encode(bytes), StandardCharsets.UTF_8);
UPlainAttr attr = entityFactory.newEntity(UPlainAttr.class);
attr.setOwner(user);
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AttributeDeserializer.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AttributeDeserializer.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AttributeDeserializer.java
index 91a5980..a6885d7 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AttributeDeserializer.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AttributeDeserializer.java
@@ -25,10 +25,9 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Iterator;
+import java.util.Base64;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
-import org.identityconnectors.common.Base64;
import org.identityconnectors.common.security.GuardedString;
import org.identityconnectors.framework.common.objects.Attribute;
import org.identityconnectors.framework.common.objects.AttributeBuilder;
@@ -46,8 +45,7 @@ class AttributeDeserializer extends JsonDeserializer<Attribute> {
String name = tree.get("name").asText();
List<Object> values = new ArrayList<>();
- for (Iterator<JsonNode> itor = tree.get("value").iterator(); itor.hasNext();) {
- JsonNode node = itor.next();
+ for (JsonNode node : tree.get("value")) {
if (node.isNull()) {
values.add(null);
} else if (node.isObject()) {
@@ -65,7 +63,7 @@ class AttributeDeserializer extends JsonDeserializer<Attribute> {
if (text.startsWith(AttributeSerializer.BYTE_ARRAY_PREFIX)
&& text.endsWith(AttributeSerializer.BYTE_ARRAY_SUFFIX)) {
- values.add(Base64.decode(StringUtils.substringBetween(
+ values.add(Base64.getMimeDecoder().decode(StringUtils.substringBetween(
text, AttributeSerializer.BYTE_ARRAY_PREFIX, AttributeSerializer.BYTE_ARRAY_SUFFIX)));
} else {
values.add(text);
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AttributeSerializer.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AttributeSerializer.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AttributeSerializer.java
index f8b0fbf..5ca1b73 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AttributeSerializer.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/AttributeSerializer.java
@@ -22,7 +22,7 @@ import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
-import org.identityconnectors.common.Base64;
+import java.util.Base64;
import org.identityconnectors.common.security.GuardedString;
import org.identityconnectors.framework.common.objects.Attribute;
@@ -59,7 +59,10 @@ class AttributeSerializer extends JsonSerializer<Attribute> {
} else if (value instanceof Boolean) {
jgen.writeBoolean((Boolean) value);
} else if (value instanceof byte[]) {
- jgen.writeString(BYTE_ARRAY_PREFIX + Base64.encode((byte[]) value) + BYTE_ARRAY_SUFFIX);
+ jgen.writeString(
+ BYTE_ARRAY_PREFIX
+ + Base64.getMimeEncoder().encodeToString((byte[]) value)
+ + BYTE_ARRAY_SUFFIX);
} else {
jgen.writeString(value.toString());
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringDeserializer.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringDeserializer.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringDeserializer.java
index a75319e..c6251b1 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringDeserializer.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringDeserializer.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
import java.lang.reflect.Field;
-import org.identityconnectors.common.Base64;
+import java.util.Base64;
import org.identityconnectors.common.security.EncryptorFactory;
import org.identityconnectors.common.security.GuardedString;
import org.slf4j.Logger;
@@ -50,7 +50,7 @@ class GuardedStringDeserializer extends JsonDeserializer<GuardedString> {
}
byte[] encryptedBytes = null;
if (tree.has("encryptedBytes")) {
- encryptedBytes = Base64.decode(tree.get("encryptedBytes").asText());
+ encryptedBytes = Base64.getMimeDecoder().decode(tree.get("encryptedBytes").asText());
}
String base64SHA1Hash = null;
if (tree.has("base64SHA1Hash")) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringSerializer.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringSerializer.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringSerializer.java
index e76416c..d55ca9f 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringSerializer.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringSerializer.java
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.lang.reflect.Field;
-import org.identityconnectors.common.Base64;
+import java.util.Base64;
import org.identityconnectors.common.security.EncryptorFactory;
import org.identityconnectors.common.security.GuardedString;
import org.identityconnectors.common.security.SecurityUtil;
@@ -62,7 +62,7 @@ class GuardedStringSerializer extends JsonSerializer<GuardedString> {
byte[] encryptedBytes =
EncryptorFactory.getInstance().getDefaultEncryptor().encrypt(SecurityUtil.decrypt(source).getBytes());
- jgen.writeStringField("encryptedBytes", Base64.encode(encryptedBytes));
+ jgen.writeStringField("encryptedBytes", Base64.getMimeEncoder().encodeToString(encryptedBytes));
String base64SHA1Hash = null;
try {
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenDeserializer.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenDeserializer.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenDeserializer.java
index 3f8dc4d..e6ee79d 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenDeserializer.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenDeserializer.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
-import org.identityconnectors.common.Base64;
+import java.util.Base64;
import org.identityconnectors.framework.common.objects.SyncToken;
class SyncTokenDeserializer extends JsonDeserializer<SyncToken> {
@@ -41,19 +41,19 @@ class SyncTokenDeserializer extends JsonDeserializer<SyncToken> {
value = node.isNull()
? null
: node.isBoolean()
- ? node.asBoolean()
- : node.isDouble()
- ? node.asDouble()
- : node.isLong()
- ? node.asLong()
- : node.isInt()
- ? node.asInt()
- : node.asText();
+ ? node.asBoolean()
+ : node.isDouble()
+ ? node.asDouble()
+ : node.isLong()
+ ? node.asLong()
+ : node.isInt()
+ ? node.asInt()
+ : node.asText();
if (value instanceof String) {
String base64 = (String) value;
try {
- value = Base64.decode(base64);
+ value = Base64.getMimeDecoder().decode(base64);
} catch (RuntimeException e) {
value = base64;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializer.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializer.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializer.java
index f9d2ee5..0644d8f 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializer.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializer.java
@@ -22,7 +22,7 @@ import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
-import org.identityconnectors.common.Base64;
+import java.util.Base64;
import org.identityconnectors.framework.common.objects.SyncToken;
class SyncTokenSerializer extends JsonSerializer<SyncToken> {
@@ -46,7 +46,7 @@ class SyncTokenSerializer extends JsonSerializer<SyncToken> {
} else if (source.getValue() instanceof Integer) {
jgen.writeNumber((Integer) source.getValue());
} else if (source.getValue() instanceof byte[]) {
- jgen.writeString(Base64.encode((byte[]) source.getValue()));
+ jgen.writeString(Base64.getMimeEncoder().encodeToString((byte[]) source.getValue()));
} else {
jgen.writeString(source.getValue().toString());
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
index ea4f37d..275b84d 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPPasswordPropagationActions.java
@@ -18,9 +18,11 @@
*/
package org.apache.syncope.core.provisioning.java.propagation;
+import java.util.Base64;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
+import javax.xml.bind.DatatypeConverter;
import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.CipherAlgorithm;
import org.apache.syncope.common.lib.types.ConnConfProperty;
@@ -37,8 +39,6 @@ import org.identityconnectors.framework.common.objects.AttributeUtil;
import org.identityconnectors.framework.common.objects.ConnectorObject;
import org.identityconnectors.framework.common.objects.OperationalAttributes;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.crypto.codec.Base64;
-import org.springframework.security.crypto.codec.Hex;
import org.springframework.transaction.annotation.Transactional;
/**
@@ -71,8 +71,8 @@ public class LDAPPasswordPropagationActions implements PropagationActions {
&& cipherAlgorithmMatches(getCipherAlgorithm(connInstance), user.getCipherAlgorithm())) {
String password = user.getPassword().toLowerCase();
- byte[] decodedPassword = Hex.decode(password);
- byte[] base64EncodedPassword = Base64.encode(decodedPassword);
+ byte[] decodedPassword = DatatypeConverter.parseHexBinary(password);
+ byte[] base64EncodedPassword = Base64.getMimeEncoder().encode(decodedPassword);
String cipherPlusPassword =
("{" + cipherAlgorithm.toLowerCase() + "}" + new String(base64EncodedPassword));
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java
index 8a9f1da..ac3ddfa 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java
@@ -18,6 +18,8 @@
*/
package org.apache.syncope.core.provisioning.java.pushpull;
+import java.util.Base64;
+import javax.xml.bind.DatatypeConverter;
import org.apache.syncope.common.lib.patch.AnyPatch;
import org.apache.syncope.common.lib.patch.PasswordPatch;
import org.apache.syncope.common.lib.patch.UserPatch;
@@ -34,8 +36,6 @@ import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.crypto.codec.Base64;
-import org.springframework.security.crypto.codec.Hex;
import org.springframework.transaction.annotation.Transactional;
/**
@@ -112,9 +112,8 @@ public class LDAPPasswordPullActions implements PullActions {
if (entity instanceof UserTO && encodedPassword != null && cipher != null) {
User user = userDAO.find(entity.getKey());
if (user != null) {
- byte[] encodedPasswordBytes = Base64.decode(encodedPassword.getBytes());
- char[] encodedHex = Hex.encode(encodedPasswordBytes);
- String encodedHexStr = new String(encodedHex).toUpperCase();
+ byte[] encodedPasswordBytes = Base64.getMimeDecoder().decode(encodedPassword.getBytes());
+ String encodedHexStr = DatatypeConverter.printHexBinary(encodedPasswordBytes).toUpperCase();
user.setEncodedPassword(encodedHexStr, cipher);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/spring/src/main/java/org/apache/syncope/core/spring/security/Encryptor.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/Encryptor.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/Encryptor.java
index 91cf40a..ee802b0 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/Encryptor.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/Encryptor.java
@@ -22,6 +22,7 @@ import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
+import java.util.Base64;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
@@ -39,7 +40,6 @@ import org.jasypt.digest.StandardStringDigester;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.crypto.bcrypt.BCrypt;
-import org.springframework.security.crypto.codec.Base64;
public final class Encryptor {
@@ -180,7 +180,7 @@ public final class Encryptor {
final Cipher cipher = Cipher.getInstance(CipherAlgorithm.AES.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
- encodedValue = new String(Base64.encode(cipher.doFinal(cleartext)));
+ encodedValue = new String(Base64.getMimeEncoder().encode(cipher.doFinal(cleartext)));
} else if (cipherAlgorithm == CipherAlgorithm.BCRYPT) {
encodedValue = BCrypt.hashpw(value, BCrypt.gensalt());
} else {
@@ -223,7 +223,7 @@ public final class Encryptor {
final Cipher cipher = Cipher.getInstance(CipherAlgorithm.AES.getAlgorithm());
cipher.init(Cipher.DECRYPT_MODE, keySpec);
- value = new String(cipher.doFinal(Base64.decode(encoded)), StandardCharsets.UTF_8);
+ value = new String(cipher.doFinal(Base64.getMimeDecoder().decode(encoded)), StandardCharsets.UTF_8);
}
return value;
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractUserWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractUserWorkflowAdapter.java
index 8f3b9c7..c5a9c3a 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractUserWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractUserWorkflowAdapter.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.core.workflow.java;
+import java.util.Base64;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.syncope.common.lib.patch.UserPatch;
@@ -29,7 +30,6 @@ import org.apache.syncope.core.provisioning.api.WorkflowResult;
import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
import org.apache.syncope.core.workflow.api.UserWorkflowDefinitionAdapter;
-import org.identityconnectors.common.Base64;
import org.identityconnectors.common.security.EncryptorFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,13 +52,14 @@ public abstract class AbstractUserWorkflowAdapter implements UserWorkflowAdapter
protected EntityFactory entityFactory;
protected String encrypt(final String clear) {
- byte[] encryptedBytes = EncryptorFactory.getInstance().getDefaultEncryptor().encrypt(clear.getBytes());
- return Base64.encode(encryptedBytes);
+ byte[] encrypted = EncryptorFactory.getInstance().getDefaultEncryptor().encrypt(clear.getBytes());
+ return Base64.getMimeEncoder().encodeToString(encrypted);
}
protected String decrypt(final String crypted) {
- byte[] decryptedBytes = EncryptorFactory.getInstance().getDefaultEncryptor().decrypt(Base64.decode(crypted));
- return new String(decryptedBytes);
+ byte[] decrypted = EncryptorFactory.getInstance().getDefaultEncryptor().
+ decrypt(Base64.getMimeDecoder().decode(crypted));
+ return new String(decrypted);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java b/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java
index bf7d409..ee84197 100644
--- a/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java
+++ b/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.core.provisioning.java.data;
+import java.util.Base64;
import java.util.stream.Collectors;
import org.apache.syncope.common.lib.SyncopeClientCompositeException;
import org.apache.syncope.common.lib.SyncopeClientException;
@@ -31,7 +32,6 @@ import org.apache.syncope.common.lib.types.MappingPurpose;
import org.apache.syncope.common.lib.types.SchemaType;
import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
import org.apache.syncope.core.persistence.api.dao.SAML2IdPDAO;
-import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
import org.apache.syncope.core.persistence.api.entity.SAML2EntityFactory;
import org.apache.syncope.core.persistence.api.entity.SAML2IdP;
import org.apache.syncope.core.persistence.api.entity.SAML2IdPItem;
@@ -41,7 +41,6 @@ import org.apache.syncope.core.provisioning.api.data.SAML2IdPDataBinder;
import org.apache.syncope.core.provisioning.java.IntAttrNameParser;
import org.apache.syncope.core.provisioning.java.jexl.JexlUtils;
import org.apache.syncope.core.spring.BeanUtils;
-import org.identityconnectors.common.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -165,7 +164,7 @@ public class SAML2IdPDataBinderImpl implements SAML2IdPDataBinder {
public SAML2IdP update(final SAML2IdP idp, final SAML2IdPTO idpTO) {
idp.setEntityID(idpTO.getEntityID());
idp.setName(idpTO.getName());
- idp.setMetadata(Base64.decode(idpTO.getMetadata()));
+ idp.setMetadata(Base64.getMimeDecoder().decode(idpTO.getMetadata()));
idp.setCreateUnmatching(idpTO.isCreateUnmatching());
idp.setUpdateMatching(idpTO.isUpdateMatching());
idp.setUseDeflateEncoding(idpTO.isUseDeflateEncoding());
@@ -186,14 +185,14 @@ public class SAML2IdPDataBinderImpl implements SAML2IdPDataBinder {
idp.getItems().clear();
AnyTypeClassTO allowedSchemas = new AnyTypeClassTO();
- for (AnyTypeClass anyTypeClass : anyTypeDAO.findUser().getClasses()) {
+ anyTypeDAO.findUser().getClasses().forEach(anyTypeClass -> {
allowedSchemas.getPlainSchemas().addAll(anyTypeClass.getPlainSchemas().stream().
map(s -> s.getKey()).collect(Collectors.toList()));
allowedSchemas.getDerSchemas().addAll(anyTypeClass.getDerSchemas().stream().
map(s -> s.getKey()).collect(Collectors.toList()));
allowedSchemas.getVirSchemas().addAll(anyTypeClass.getVirSchemas().stream().
map(s -> s.getKey()).collect(Collectors.toList()));
- }
+ });
populateItems(idpTO, idp, allowedSchemas);
idp.getActionsClassNames().clear();
@@ -203,7 +202,7 @@ public class SAML2IdPDataBinderImpl implements SAML2IdPDataBinder {
}
private void populateItems(final SAML2IdP idp, final SAML2IdPTO idpTO) {
- for (SAML2IdPItem item : idp.getItems()) {
+ idp.getItems().forEach(item -> {
ItemTO itemTO = new ItemTO();
itemTO.setKey(item.getKey());
BeanUtils.copyProperties(item, itemTO, ITEM_IGNORE_PROPERTIES);
@@ -214,7 +213,7 @@ public class SAML2IdPDataBinderImpl implements SAML2IdPDataBinder {
} else {
idpTO.add(itemTO);
}
- }
+ });
}
@Override
@@ -228,7 +227,7 @@ public class SAML2IdPDataBinderImpl implements SAML2IdPDataBinder {
idpTO.setBindingType(idp.getBindingType());
idpTO.setCreateUnmatching(idp.isCreateUnmatching());
idpTO.setUpdateMatching(idp.isUpdateMatching());
- idpTO.setMetadata(Base64.encode(idp.getMetadata()));
+ idpTO.setMetadata(Base64.getMimeEncoder().encodeToString(idp.getMetadata()));
if (idp.getUserTemplate() != null) {
idpTO.setUserTemplate((UserTO) idp.getUserTemplate().get());
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2ITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2ITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2ITCase.java
index e20c77c..35e3efa 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2ITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2ITCase.java
@@ -45,6 +45,7 @@ import java.util.Base64;
import java.util.Collections;
import java.util.Date;
import java.util.Optional;
+import java.util.regex.Pattern;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.xml.namespace.QName;
@@ -101,6 +102,9 @@ import org.w3c.dom.Element;
public class SAML2ITCase extends AbstractITCase {
+ private static final Pattern BASE64 = Pattern.compile(
+ "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$");
+
private static SyncopeClient anonymous;
private static Path keystorePath;
@@ -153,9 +157,9 @@ public class SAML2ITCase extends AbstractITCase {
return;
}
- for (SAML2IdPTO idp : saml2IdPService.list()) {
+ saml2IdPService.list().forEach(idp -> {
saml2IdPService.delete(idp.getKey());
- }
+ });
Files.delete(keystorePath);
Files.delete(truststorePath);
@@ -203,7 +207,7 @@ public class SAML2ITCase extends AbstractITCase {
assertEquals("https://idp.testshib.org/idp/profile/SAML2/POST/SSO", loginRequest.getIdpServiceAddress());
assertNotNull(loginRequest.getContent());
- assertTrue(org.apache.commons.codec.binary.Base64.isBase64(loginRequest.getContent()));
+ assertTrue(BASE64.matcher(loginRequest.getContent()).matches());
assertNotNull(loginRequest.getRelayState());
}
@@ -257,7 +261,7 @@ public class SAML2ITCase extends AbstractITCase {
assertEquals("https://localhost:8443/fediz-idp/saml/up", loginRequest.getIdpServiceAddress());
assertNotNull(loginRequest.getContent());
- assertTrue(org.apache.commons.codec.binary.Base64.isBase64(loginRequest.getContent()));
+ assertTrue(BASE64.matcher(loginRequest.getContent()).matches());
assertNotNull(loginRequest.getRelayState());
// Check a null relaystate
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
index 4a1c445..5d679f7 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
@@ -27,16 +27,17 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.IOException;
+import java.util.Base64;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import javax.naming.NamingException;
import javax.sql.DataSource;
import javax.ws.rs.core.GenericType;
import org.apache.commons.lang3.tuple.Pair;
-import org.apache.cxf.common.util.Base64Utility;
import org.apache.cxf.helpers.IOUtils;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.SyncopeConstants;
@@ -611,11 +612,11 @@ public class UserIssuesITCase extends AbstractITCase {
public void issueSYNCOPE354() {
// change resource-ldap group mapping for including uniqueMember (need for assertions below)
ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
- for (ItemTO item : ldap.getProvision(AnyTypeKind.GROUP.name()).get().getMapping().getItems()) {
- if ("description".equals(item.getExtAttrName())) {
- item.setExtAttrName("uniqueMember");
- }
- }
+ ldap.getProvision(AnyTypeKind.GROUP.name()).get().getMapping().getItems().stream().
+ filter(item -> ("description".equals(item.getExtAttrName()))).
+ forEachOrdered(item -> {
+ item.setExtAttrName("uniqueMember");
+ });
resourceService.update(ldap);
// 1. create group with LDAP resource
@@ -658,11 +659,11 @@ public class UserIssuesITCase extends AbstractITCase {
contains("uid=" + userTO.getUsername() + ",ou=people,o=isp"));
// 6. restore original resource-ldap group mapping
- for (ItemTO item : ldap.getProvision(AnyTypeKind.GROUP.name()).get().getMapping().getItems()) {
- if ("uniqueMember".equals(item.getExtAttrName())) {
- item.setExtAttrName("description");
- }
- }
+ ldap.getProvision(AnyTypeKind.GROUP.name()).get().getMapping().getItems().stream().
+ filter(item -> ("uniqueMember".equals(item.getExtAttrName()))).
+ forEachOrdered(item -> {
+ item.setExtAttrName("description");
+ });
resourceService.update(ldap);
}
@@ -680,8 +681,8 @@ public class UserIssuesITCase extends AbstractITCase {
// 2. create user with membership of the above group
UserTO userTO = UserITCase.getUniqueSampleTO("syncope357@syncope.apache.org");
userTO.getPlainAttrs().add(attrTO("obscure", "valueToBeObscured"));
- userTO.getPlainAttrs().add(attrTO("photo",
- Base64Utility.encode(IOUtils.readBytesFromStream(getClass().getResourceAsStream("/favicon.jpg")))));
+ userTO.getPlainAttrs().add(attrTO("photo", Base64.getMimeEncoder().encodeToString(
+ IOUtils.readBytesFromStream(getClass().getResourceAsStream("/favicon.jpg")))));
userTO.getMemberships().add(new MembershipTO.Builder().group(groupTO.getKey()).build());
userTO = createUser(userTO).getEntity();
@@ -696,9 +697,12 @@ public class UserIssuesITCase extends AbstractITCase {
AttrTO registeredAddress = connObj.getAttr("registeredAddress").get();
assertNotNull(registeredAddress);
assertEquals(userTO.getPlainAttr("obscure").get().getValues(), registeredAddress.getValues());
- AttrTO jpegPhoto = connObj.getAttr("jpegPhoto").get();
- assertNotNull(jpegPhoto);
- assertEquals(userTO.getPlainAttr("photo").get().getValues(), jpegPhoto.getValues());
+ Optional<AttrTO> jpegPhoto = connObj.getAttr("jpegPhoto");
+ assertTrue(jpegPhoto.isPresent());
+ // difference between java.util.Base64 encoding and ConnId's
+ assertEquals(
+ userTO.getPlainAttr("photo").get().getValues().get(0).replace("\n", "").replace("\r", ""),
+ jpegPhoto.get().getValues().get(0));
// 4. remove group
groupService.delete(groupTO.getKey());
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/installer/pom.xml
----------------------------------------------------------------------
diff --git a/installer/pom.xml b/installer/pom.xml
index 7db2240..8e8756c 100644
--- a/installer/pom.xml
+++ b/installer/pom.xml
@@ -80,10 +80,6 @@ under the License.
</dependency>
<dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- </dependency>
- <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/installer/src/main/java/org/apache/syncope/installer/utilities/PasswordGenerator.java
----------------------------------------------------------------------
diff --git a/installer/src/main/java/org/apache/syncope/installer/utilities/PasswordGenerator.java b/installer/src/main/java/org/apache/syncope/installer/utilities/PasswordGenerator.java
index 79173a4..4d2c602 100644
--- a/installer/src/main/java/org/apache/syncope/installer/utilities/PasswordGenerator.java
+++ b/installer/src/main/java/org/apache/syncope/installer/utilities/PasswordGenerator.java
@@ -22,7 +22,7 @@ import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.codec.binary.Hex;
+import javax.xml.bind.DatatypeConverter;
public final class PasswordGenerator {
@@ -30,7 +30,7 @@ public final class PasswordGenerator {
String pwd = "";
try {
final MessageDigest cript = MessageDigest.getInstance("SHA-1");
- pwd = new String(Hex.encodeHex(cript.digest()));
+ pwd = DatatypeConverter.printHexBinary(cript.digest());
} catch (final NoSuchAlgorithmException ex) {
Logger.getLogger(PasswordGenerator.class.getName()).log(Level.SEVERE, "NoSuchAlgorithmException", ex);
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/installer/src/main/resources/izpack/install.xml
----------------------------------------------------------------------
diff --git a/installer/src/main/resources/izpack/install.xml b/installer/src/main/resources/izpack/install.xml
index 3a65898..45f9042 100644
--- a/installer/src/main/resources/izpack/install.xml
+++ b/installer/src/main/resources/izpack/install.xml
@@ -131,7 +131,6 @@ under the License.
<jar src="../syncope-installer-@{syncope.version}.jar" stage="install"/>
<jar src="lib/commons-logging-@{commons-logging.version}.jar"/>
- <jar src="lib/commons-codec-@{commons-codec.version}.jar"/>
<jar src="lib/commons-io-@{commons-io.version}.jar"/>
<jar src="lib/commons-lang3-@{commons-lang.version}.jar"/>
<jar src="lib/httpclient-@{httpclient.version}.jar"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/8776551b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index df9e4f5..de2fdea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -397,7 +397,6 @@ under the License.
<commons-io.version>2.5</commons-io.version>
<commons-email.version>1.5</commons-email.version>
- <commons-codec.version>1.10</commons-codec.version>
<commons-jexl.version>3.1</commons-jexl.version>
<commons-lang.version>3.6</commons-lang.version>
<commons-text.version>1.1</commons-text.version>
@@ -950,11 +949,6 @@ under the License.
</exclusions>
</dependency>
<dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- <version>${commons-codec.version}</version>
- </dependency>
- <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-jexl3</artifactId>
<version>${commons-jexl.version}</version>