[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