[java-identity-provider] branch master updated: IDP-1327 - Add missing setting to schema/parser for ComputedId connector
Scott Cantor
cantor.2 at osu.edu
Mon Sep 10 12:25:01 EDT 2018
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch master
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=9ba7dc8c0fe2f82d7ac696cb8fc007cc9197baf3
The following commit(s) were added to refs/heads/master by this push:
new 9ba7dc8 IDP-1327 - Add missing setting to schema/parser for ComputedId connector
9ba7dc8 is described below
commit 9ba7dc8c0fe2f82d7ac696cb8fc007cc9197baf3
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Sep 10 12:24:58 2018 -0400
IDP-1327 - Add missing setting to schema/parser for ComputedId connector
https://issues.shibboleth.net/jira/browse/IDP-1327
Added algorithm, encoding attributes.
---
.../dc/impl/BaseComputedIDDataConnectorParser.java | 10 +++++-
.../dc/ComputedIDDataConnectorParserTest.java | 5 +++
.../resolver/spring/dc/resolver/computed.xml | 2 ++
.../resolver/impl/ComputedIDDataConnector.java | 41 +++++++++++++++++++++-
.../ComputedPersistentIdGenerationStrategy.java | 24 ++++++++++++-
.../schema/shibboleth-attribute-resolver.xsd | 32 ++++++++++++++++-
6 files changed, 110 insertions(+), 4 deletions(-)
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/BaseComputedIDDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/BaseComputedIDDataConnectorParser.java
index c5bad85..9747201 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/BaseComputedIDDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/BaseComputedIDDataConnectorParser.java
@@ -89,6 +89,14 @@ public abstract class BaseComputedIDDataConnectorParser extends BaseResolverPlug
builder.addPropertyValue("failoverDataConnectorId", connectorId);
}
+ if (config.hasAttributeNS(null, "algorithm")) {
+ builder.addPropertyValue("algorithm", config.getAttributeNS(null, "algorithm"));
+ }
+
+ if (config.hasAttributeNS(null, "encoding")) {
+ builder.addPropertyValue("encoding", config.getAttributeNS(null, "encoding"));
+ }
+
final String sourceAttribute = StringSupport.trimOrNull(config.getAttributeNS(null, "sourceAttributeID"));
final String salt;
@@ -97,7 +105,7 @@ public abstract class BaseComputedIDDataConnectorParser extends BaseResolverPlug
} else {
salt = null;
}
-
+
if (null == salt) {
log.debug("{} Generated Attribute: '{}', sourceAttribute = '{}', no salt provided",
getLogPrefix(), generatedAttribute, sourceAttribute);
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ComputedIDDataConnectorParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ComputedIDDataConnectorParserTest.java
index 76e0001..4603584 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ComputedIDDataConnectorParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ComputedIDDataConnectorParserTest.java
@@ -22,6 +22,7 @@ import net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader;
import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
import net.shibboleth.idp.attribute.resolver.spring.dc.impl.ComputedIDDataConnectorParser;
import net.shibboleth.idp.saml.attribute.resolver.impl.ComputedIDDataConnector;
+import net.shibboleth.idp.saml.nameid.impl.ComputedPersistentIdGenerationStrategy.Encoding;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import org.springframework.context.support.GenericApplicationContext;
@@ -44,6 +45,8 @@ public class ComputedIDDataConnectorParserTest extends BaseAttributeDefinitionPa
Assert.assertEquals(connector.getSourceAttributeId(), "theSourceRemainsTheSame");
Assert.assertEquals(connector.getGeneratedAttributeId(), "jenny");
Assert.assertEquals(connector.getSalt(), "abcdefghijklmnopqrst ".getBytes());
+ Assert.assertEquals(connector.getAlgorithm(), "SHA");
+ Assert.assertEquals(connector.getEncoding(), Encoding.BASE64);
connector.initialize();
}
@@ -55,6 +58,8 @@ public class ComputedIDDataConnectorParserTest extends BaseAttributeDefinitionPa
Assert.assertEquals(connector.getSourceAttributeId(), "theSourceRemainsTheSame");
Assert.assertEquals(connector.getGeneratedAttributeId(), "jenny");
Assert.assertEquals(connector.getSalt(), "abcdefghijklmnopqrst ".getBytes());
+ Assert.assertEquals(connector.getAlgorithm(), "SHA256");
+ Assert.assertEquals(connector.getEncoding(), Encoding.BASE32);
connector.initialize();
}
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/resolver/computed.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/resolver/computed.xml
index e3d26ef..add8e3b 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/resolver/computed.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/resolver/computed.xml
@@ -5,6 +5,8 @@
sourceAttributeID="theSourceRemainsTheSame"
generatedAttributeID="jenny"
salt="abcdefghijklmnopqrst "
+ algorithm="SHA256"
+ encoding="BASE32"
xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
<FailoverDataConnector ref="2123"/>
<Dependency ref="321"/>
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/ComputedIDDataConnector.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/ComputedIDDataConnector.java
index 7c9ac0f..ec4316f 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/ComputedIDDataConnector.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/ComputedIDDataConnector.java
@@ -28,6 +28,7 @@ import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
import net.shibboleth.idp.saml.nameid.impl.ComputedPersistentIdGenerationStrategy;
+import net.shibboleth.idp.saml.nameid.impl.ComputedPersistentIdGenerationStrategy.Encoding;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
@@ -93,7 +94,7 @@ public class ComputedIDDataConnector extends AbstractPersistentIdDataConnector {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
if (null != salt) {
- log.debug("{} Salt set (secret is logged at TRACE)");
+ log.debug("{} Salt set (secret is logged at TRACE)", getLogPrefix());
log.trace("{} Salt set as bytes to {}", getLogPrefix(), Arrays.toString(salt));
idStrategy.setSalt(salt);
} else {
@@ -116,6 +117,17 @@ public class ComputedIDDataConnector extends AbstractPersistentIdDataConnector {
}
}
+ /**
+ * Get the JCE algorithm name of the digest algorithm to use (default is SHA).
+ *
+ * @return JCE message digest algorithm
+ */
+ @Nullable @NotEmpty public String getAlgorithm() {
+ if (null == idStrategy) {
+ return null;
+ }
+ return idStrategy.getAlgorithm();
+ }
/**
* Set the JCE algorithm name of the digest algorithm to use (default is SHA).
@@ -128,6 +140,33 @@ public class ComputedIDDataConnector extends AbstractPersistentIdDataConnector {
idStrategy.setAlgorithm(alg);
}
+ /**
+ * Get the post-digest encoding to use.
+ *
+ * @return encoding
+ *
+ * @since 3.4.0
+ */
+ @Nullable public Encoding getEncoding() {
+ if (null == idStrategy) {
+ return null;
+ }
+ return idStrategy.getEncoding();
+ }
+
+ /**
+ * Set the post-digest encoding to use.
+ *
+ * @param enc encoding
+ *
+ * @since 3.4.0
+ */
+ public void setEncoding(@Nonnull final Encoding enc) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+
+ idStrategy.setEncoding(enc);
+ }
+
/** {@inheritDoc} */
@Override
protected void doInitialize() throws ComponentInitializationException {
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ComputedPersistentIdGenerationStrategy.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ComputedPersistentIdGenerationStrategy.java
index 4f63f73..cb0dc4c 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ComputedPersistentIdGenerationStrategy.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ComputedPersistentIdGenerationStrategy.java
@@ -127,6 +127,17 @@ public class ComputedPersistentIdGenerationStrategy extends AbstractInitializabl
}
/**
+ * Get the JCE algorithm name of the digest algorithm to use (default is SHA).
+ *
+ * @return JCE message digest algorithm
+ *
+ * @since 3.4.0
+ */
+ @Nonnull @NotEmpty public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
* Set the JCE algorithm name of the digest algorithm to use (default is SHA).
*
* @param alg JCE message digest algorithm
@@ -138,6 +149,17 @@ public class ComputedPersistentIdGenerationStrategy extends AbstractInitializabl
}
/**
+ * Get the post-digest encoding to use.
+ *
+ * @return encoding
+ *
+ * @since 3.4.0
+ */
+ @Nonnull public Encoding getEncoding() {
+ return encoding;
+ }
+
+ /**
* Set the post-digest encoding to use.
*
* @param enc encoding
@@ -147,7 +169,7 @@ public class ComputedPersistentIdGenerationStrategy extends AbstractInitializabl
encoding = Constraint.isNotNull(enc, "Encoding cannot be null");
}
-
+
/**
* Install map of exceptions that override standard generation.
*
diff --git a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
index d966cb8..d8ff6f5 100644
--- a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
+++ b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
@@ -862,7 +862,7 @@
<complexType name="ComputedId">
<annotation>
<documentation>
- An ID created by taking the SHA-1 hash of the requesting entity's ID, an attribute value (usually a user identifier), and a salt.
+ An ID created by digesting the requesting entityID, an attribute value (usually a user identifier), and a salt.
</documentation>
</annotation>
<complexContent>
@@ -894,6 +894,21 @@
</documentation>
</annotation>
</attribute>
+ <attribute name="algorithm" type="string">
+ <annotation>
+ <documentation>
+ The JCE digest algorithm to use, defaults to SHA-1.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="encoding" type="string">
+ <annotation>
+ <documentation>
+ An encoding type to apply after the digest, defaults to BASE64 but should
+ be set to BASE32.
+ </documentation>
+ </annotation>
+ </attribute>
</extension>
</complexContent>
</complexType>
@@ -1606,6 +1621,21 @@
</documentation>
</annotation>
</attribute>
+ <attribute name="algorithm" type="string">
+ <annotation>
+ <documentation>
+ The JCE digest algorithm to use, defaults to SHA-1.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="encoding" type="string">
+ <annotation>
+ <documentation>
+ An encoding type to apply after the digest, defaults to BASE64 but should
+ be set to BASE32.
+ </documentation>
+ </annotation>
+ </attribute>
</extension>
</complexContent>
</complexType>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list