[java-identity-provider] branch master updated: Fix c14n handling in attribute def, add unit test.

Scott Cantor cantor.2 at osu.edu
Tue Nov 5 09:26:13 EST 2019


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=e5c837bc6bb5eda9a88cb073960dbc4a984a5243

The following commit(s) were added to refs/heads/master by this push:
       new  e5c837b   Fix c14n handling in attribute def, add unit test.
e5c837b is described below

commit e5c837bc6bb5eda9a88cb073960dbc4a984a5243
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Nov 5 09:26:10 2019 -0500

    Fix c14n handling in attribute def, add unit test.
---
 .../SubjectDerivedAttributeDefinitionParser.java   |  2 ++
 ...ntextDerivedAttributeDefinitionsParserTest.java | 34 +++++++++++++++++-----
 .../spring/ad/resolver/subjectDerivedViaC14N.xml   |  9 ++++++
 3 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java
index 72ec4d4..10bef82 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java
@@ -66,6 +66,8 @@ public class SubjectDerivedAttributeDefinitionParser extends BaseAttributeDefini
         
         final BeanDefinitionBuilder contextFunctionBuilder =
                 BeanDefinitionBuilder.genericBeanDefinition(SubjectDerivedAttributeValuesFunction.class);
+        contextFunctionBuilder.setInitMethodName("initialize");
+        contextFunctionBuilder.setDestroyMethodName("destroy");
         contextFunctionBuilder.addPropertyValue("id", getDefinitionId());
 
         if (config.hasAttributeNS(null, "forCanonicalization")) {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/ContextDerivedAttributeDefinitionsParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/ContextDerivedAttributeDefinitionsParserTest.java
index 10b08ad..0d29241 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/ContextDerivedAttributeDefinitionsParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/ContextDerivedAttributeDefinitionsParserTest.java
@@ -40,6 +40,7 @@ import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParse
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.ContextDerivedAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.SubjectDerivedAttributeDefinitionParser;
 import net.shibboleth.idp.authn.AuthenticationResult;
+import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
 import net.shibboleth.idp.authn.context.SubjectContext;
 import net.shibboleth.idp.authn.principal.IdPAttributePrincipal;
 import net.shibboleth.idp.saml.authn.principal.AuthenticationMethodPrincipal;
@@ -53,7 +54,7 @@ public class ContextDerivedAttributeDefinitionsParserTest extends BaseAttributeD
     /** Simple result. */
     private static final String SIMPLE_VALUE = "simple";
 
-    private AttributeResolutionContext getCtx(final String attributeName) {
+    private AttributeResolutionContext getCtx(final String attributeName, boolean c14n) {
         final List<IdPAttributeValue> list = new ArrayList<>(2);
         list.add(new StringAttributeValue(SIMPLE_VALUE));
         list.add(new StringAttributeValue(SIMPLE_VALUE + "2"));
@@ -63,12 +64,17 @@ public class ContextDerivedAttributeDefinitionsParserTest extends BaseAttributeD
 
         final AttributeResolutionContext ctx = TestSources.createResolutionContext(TestSources.PRINCIPAL_ID,
                 TestSources.IDP_ENTITY_ID, TestSources.SP_ENTITY_ID);
-        final SubjectContext sc = ctx.getParent().getSubcontext(SubjectContext.class, true);
-        final Map<String, AuthenticationResult> authnResults = sc.getAuthenticationResults();
         final Subject subject = new Subject();
         subject.getPrincipals().add(new IdPAttributePrincipal(attr));
         subject.getPrincipals().add(new AuthenticationMethodPrincipal(SIMPLE_VALUE + "2"));
-        authnResults.put("one", new AuthenticationResult("1", subject));
+
+        if (c14n) {
+            ctx.getParent().getSubcontext(SubjectCanonicalizationContext.class, true).setSubject(subject);
+        } else {
+            final SubjectContext sc = ctx.getParent().getSubcontext(SubjectContext.class, true);
+            final Map<String, AuthenticationResult> authnResults = sc.getAuthenticationResults();
+            authnResults.put("one", new AuthenticationResult("1", subject));
+        }
 
         return ctx;
     }
@@ -77,7 +83,19 @@ public class ContextDerivedAttributeDefinitionsParserTest extends BaseAttributeD
         final AttributeDefinition attrDef =
                 getAttributeDefn("resolver/subjectDerived.xml", ContextDerivedAttributeDefinition.class);
 
-        final List<IdPAttributeValue> foo = attrDef.resolve(getCtx("Whatever")).getValues();
+        final List<IdPAttributeValue> foo = attrDef.resolve(getCtx("Whatever", false)).getValues();
+
+        assertEquals(2, foo.size());
+        assertTrue(foo.contains(new StringAttributeValue(SIMPLE_VALUE)));
+        assertTrue(foo.contains(new StringAttributeValue(SIMPLE_VALUE + "2")));
+
+    }
+
+    @Test public void resolverSubjectViaC14N() throws ResolutionException {
+        final AttributeDefinition attrDef =
+                getAttributeDefn("resolver/subjectDerivedViaC14N.xml", ContextDerivedAttributeDefinition.class);
+
+        final List<IdPAttributeValue> foo = attrDef.resolve(getCtx("Whatever", true)).getValues();
 
         assertEquals(2, foo.size());
         assertTrue(foo.contains(new StringAttributeValue(SIMPLE_VALUE)));
@@ -89,7 +107,7 @@ public class ContextDerivedAttributeDefinitionsParserTest extends BaseAttributeD
         final AttributeDefinition attrDef = getAttributeDefn("resolver/subjectDerivedComplex.xml", "contextDerivedBeans.xml",
                 ContextDerivedAttributeDefinition.class);
 
-        final List<IdPAttributeValue> foo = attrDef.resolve(getCtx("BeanWhatever")).getValues();
+        final List<IdPAttributeValue> foo = attrDef.resolve(getCtx("BeanWhatever", false)).getValues();
 
         assertEquals(2, foo.size());
         assertTrue(foo.contains(new StringAttributeValue(SIMPLE_VALUE)));
@@ -100,7 +118,7 @@ public class ContextDerivedAttributeDefinitionsParserTest extends BaseAttributeD
         final AttributeDefinition attrDef = getAttributeDefn("resolver/contextDerived.xml", "contextDerivedBeans.xml",
                 ContextDerivedAttributeDefinition.class);
 
-        final List<IdPAttributeValue> foo = attrDef.resolve(getCtx("BeanWhatever")).getValues();
+        final List<IdPAttributeValue> foo = attrDef.resolve(getCtx("BeanWhatever", false)).getValues();
 
         assertEquals(2, foo.size());
         assertTrue(foo.contains(new StringAttributeValue(SIMPLE_VALUE)));
@@ -110,7 +128,7 @@ public class ContextDerivedAttributeDefinitionsParserTest extends BaseAttributeD
     @Test public void warn() throws ResolutionException {
         final AttributeDefinition attrDef =
                 getAttributeDefn("resolver/subjectDerivedWarn.xml", ContextDerivedAttributeDefinition.class);
-        final List<IdPAttributeValue> foo = attrDef.resolve(getCtx("Whatever")).getValues();
+        final List<IdPAttributeValue> foo = attrDef.resolve(getCtx("Whatever", false)).getValues();
 
         assertEquals(2, foo.size());
         assertTrue(foo.contains(new StringAttributeValue(SIMPLE_VALUE)));
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/subjectDerivedViaC14N.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/subjectDerivedViaC14N.xml
new file mode 100644
index 0000000..38db1e6
--- /dev/null
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/subjectDerivedViaC14N.xml
@@ -0,0 +1,9 @@
+ <AttributeDefinition xmlns="urn:mace:shibboleth:2.0:resolver" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    dependencyOnly="1"
+    xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd"
+
+    xsi:type="SubjectDerivedAttribute" id="PD1" principalAttributeName="Whatever" forCanonicalization="1">
+    
+    <AttributeEncoder xsi:type="SAML2String" name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="uid" />
+
+</AttributeDefinition>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list