[java-identity-provider] branch master updated: IDP-1315 relyingparties="" attribute as short cut activationCondition
Rod Widdowson
rdw at steadingsoftware.com
Tue Aug 21 09:45:34 EDT 2018
This is an automated email from the git hooks/post-receive script.
rdw 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=b70026c790701c3a768fcf19a1d9d38fa75b126a
The following commit(s) were added to refs/heads/master by this push:
new b70026c IDP-1315 relyingparties="" attribute as short cut activationCondition
b70026c is described below
commit b70026c790701c3a768fcf19a1d9d38fa75b126a
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Aug 21 14:43:59 2018 +0100
IDP-1315 relyingparties="" attribute as short cut activationCondition
https://issues.shibboleth.net/jira/browse/IDP-1315
Includes tests (which also serve to test JSE-29)
---
idp-attribute-resolver-spring/pom.xml | 5 +++
.../resolver/spring/BaseResolverPluginParser.java | 10 ++++++
.../spring/ad/SimpleAttributeParserTest.java | 36 ++++++++++++++++++++++
.../resolver/spring/ad/relyingParties.xml | 8 +++++
.../schema/shibboleth-attribute-resolver.xsd | 9 ++++++
5 files changed, 68 insertions(+)
diff --git a/idp-attribute-resolver-spring/pom.xml b/idp-attribute-resolver-spring/pom.xml
index 322a499..acb68dc 100644
--- a/idp-attribute-resolver-spring/pom.xml
+++ b/idp-attribute-resolver-spring/pom.xml
@@ -50,6 +50,11 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>idp-profile-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>idp-profile-spring</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java
index e26ade1..3591cb2 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java
@@ -24,6 +24,7 @@ import javax.annotation.Nonnull;
import net.shibboleth.ext.spring.util.SpringSupport;
import net.shibboleth.idp.attribute.resolver.spring.impl.InputAttributeDefinitionParser;
import net.shibboleth.idp.attribute.resolver.spring.impl.InputDataConnectorParser;
+import net.shibboleth.idp.profile.logic.RelyingPartyIdPredicate;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
import net.shibboleth.utilities.java.support.xml.ElementSupport;
@@ -68,8 +69,17 @@ public abstract class BaseResolverPluginParser extends AbstractSingleBeanDefinit
builder.setDestroyMethodName("destroy");
if (config.hasAttributeNS(null, "activationConditionRef")) {
+ if (config.hasAttributeNS(null, "relyingParties")) {
+ log.warn("relyingParties ignore, using activationConditionRef");
+ }
builder.addPropertyReference("activationCondition",
StringSupport.trimOrNull(config.getAttributeNS(null, "activationConditionRef")));
+ } else if (config.hasAttributeNS(null, "relyingParties")) {
+ final BeanDefinitionBuilder rpBuilder =
+ BeanDefinitionBuilder.genericBeanDefinition(RelyingPartyIdPredicate.class);
+ rpBuilder .addConstructorArgValue(
+ SpringSupport.getAttributeValueAsList(config.getAttributeNodeNS(null, "relyingParties")));
+ builder.addPropertyValue("activationCondition", rpBuilder.getBeanDefinition());
}
if (config.hasAttributeNS(null, "profileContextStrategyRef")) {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java
index 11127c6..33db632 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java
@@ -23,14 +23,23 @@ import java.util.Locale;
import java.util.Map;
import java.util.Set;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.springframework.context.support.GenericApplicationContext;
+import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
+import org.springframework.core.env.MutablePropertySources;
+import org.springframework.core.env.StandardEnvironment;
+import org.springframework.mock.env.MockPropertySource;
import org.testng.Assert;
import org.testng.annotations.Test;
+import net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext;
import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.ad.impl.SimpleAttributeDefinition;
import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
import net.shibboleth.idp.attribute.resolver.spring.ad.impl.SimpleAttributeDefinitionParser;
+import net.shibboleth.idp.profile.context.RelyingPartyContext;
+import net.shibboleth.idp.profile.logic.RelyingPartyIdPredicate;
import net.shibboleth.idp.saml.attribute.encoding.impl.SAML1StringAttributeEncoder;
import net.shibboleth.idp.saml.attribute.encoding.impl.SAML2StringAttributeEncoder;
import net.shibboleth.idp.saml.impl.TestSources;
@@ -137,4 +146,31 @@ public class SimpleAttributeParserTest extends BaseAttributeDefinitionParserTest
@Test public void bad() throws ComponentInitializationException {
getAttributeDefn("simpleAttributeBadValues.xml", SimpleAttributeDefinition.class);
}
+
+ @Test public void relyingParties() throws ComponentInitializationException {
+ final GenericApplicationContext context = new FilesystemGenericApplicationContext();
+ final MutablePropertySources propertySources = context.getEnvironment().getPropertySources();
+ final MockPropertySource mockEnvVars = new MockPropertySource();
+ mockEnvVars.setProperty("prop1", "p1");
+ mockEnvVars.setProperty("prop2", "p2 p3");
+ mockEnvVars.setProperty("prop3", "");
+ propertySources.replace(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME, mockEnvVars);
+
+ final PropertySourcesPlaceholderConfigurer placeholderConfig = new PropertySourcesPlaceholderConfigurer();
+ placeholderConfig.setPlaceholderPrefix("%{");
+ placeholderConfig.setPlaceholderSuffix("}");
+ placeholderConfig.setPropertySources(propertySources);
+ context.addBeanFactoryPostProcessor(placeholderConfig);
+
+ AttributeDefinition attr = getAttributeDefn("relyingParties.xml", SimpleAttributeDefinition.class, context);
+ RelyingPartyIdPredicate pre = (RelyingPartyIdPredicate) attr.getActivationCondition();
+ ProfileRequestContext prc = new ProfileRequestContext<>();
+ RelyingPartyContext rpContext = prc.getSubcontext(RelyingPartyContext.class, true);
+ rpContext.setRelyingPartyId("p1");
+ Assert.assertTrue(pre.apply(prc));
+ rpContext.setRelyingPartyId("p2 p3");
+ Assert.assertFalse(pre.apply(prc));
+ rpContext.setRelyingPartyId("p3");
+ Assert.assertTrue(pre.apply(prc));
+ }
}
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/relyingParties.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/relyingParties.xml
new file mode 100644
index 0000000..0c3d879
--- /dev/null
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/relyingParties.xml
@@ -0,0 +1,8 @@
+ <AttributeDefinition
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="urn:mace:shibboleth:2.0:resolver"
+ xsi:type="Simple" id="attry"
+ relyingParties="%{prop1} %{prop2} %{prop3}"
+ xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
+ <InputAttributeDefinition ref="fii"/>
+</AttributeDefinition>
\ No newline at end of file
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 175a141..d966cb8 100644
--- a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
+++ b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
@@ -289,6 +289,15 @@
<annotation>
<documentation>
A reference to a predicate to decide whether this plugin is applicable
+ Mutually exclusive with relyingParties
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="relyingParties" type="string">
+ <annotation>
+ <documentation>
+ A (space separated) list of entities for which this plugin is to be active
+ Mutually exclusive with activationConditionRef
</documentation>
</annotation>
</attribute>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list