[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