[java-shib-metadata] branch main updated: JSMD-6 - Metadata filter wiring should support an EntityRegex condition
Scott Cantor
cantor.2 at osu.edu
Mon Jan 29 20:43:45 UTC 2024
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository java-shib-metadata.
View the commit online:
http://git.shibboleth.net/view/?p=java-shib-metadata.git;a=commit;h=b82e71424e9e5d1a244c7341147b9b296eefdb70
The following commit(s) were added to refs/heads/main by this push:
new b82e7142 JSMD-6 - Metadata filter wiring should support an EntityRegex condition
b82e7142 is described below
commit b82e71424e9e5d1a244c7341147b9b296eefdb70
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Jan 29 15:43:38 2024 -0500
JSMD-6 - Metadata filter wiring should support an EntityRegex condition
https://shibboleth.atlassian.net/browse/JSMD-6
Added to 4 extant filters that support the Entity condition syntax.
---
.../metadata/filter/AlgorithmFilterParser.java | 9 +++
.../filter/EntityAttributesFilterParser.java | 9 +++
.../metadata/filter/NameIDFormatFilterParser.java | 9 +++
.../metadata/filter/PredicateFilterParser.java | 48 ++++++++++++++-
.../main/resources/schema/shibboleth-metadata.xsd | 52 +++++++++++++----
.../metadata/filter/AlgorithmFilterParserTest.java | 7 ++-
.../filter/EntityAttributesFilterParserTest.java | 5 ++
.../filter/NameIDFormatFilterParserTest.java | 5 ++
.../metadata/filter/PredicateFilterParserTest.java | 10 ++++
.../spring/metadata/filter/algorithmBeans.xml | 14 -----
.../spring/metadata/filter/algorithmRegex.xml | 68 ++++++++++++++++++++++
.../metadata/filter/entityAttributesRegex.xml | 21 +++++++
.../spring/metadata/filter/nameIDFormatRegex.xml | 44 ++++++++++++++
.../metadata/filter/predicateEntityRegex.xml | 10 ++++
14 files changed, 284 insertions(+), 27 deletions(-)
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParser.java
index 05380099..76d62d06 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParser.java
@@ -25,6 +25,7 @@ import org.opensaml.core.xml.io.Unmarshaller;
import org.opensaml.core.xml.io.UnmarshallingException;
import org.opensaml.core.xml.util.XMLObjectSupport;
import org.opensaml.saml.common.profile.logic.EntityIdPredicate;
+import org.opensaml.saml.common.profile.logic.EntityRegexPredicate;
import org.opensaml.saml.ext.saml2alg.DigestMethod;
import org.opensaml.saml.ext.saml2alg.SigningMethod;
import org.opensaml.saml.metadata.resolver.filter.impl.AlgorithmFilter;
@@ -131,6 +132,14 @@ public class AlgorithmFilterParser extends AbstractMetadataFilterParser {
} catch (final UnmarshallingException e) {
log.error("Error unmarshalling EncryptionMethod element", e);
}
+ } else if (ElementSupport.isElementNamed(child, AbstractMetadataProviderParser.METADATA_NAMESPACE,
+ "EntityRegex")) {
+ final ManagedList<XMLObject> forRule = new ManagedList<>(accumulator.size());
+ forRule.addAll(accumulator);
+ final BeanDefinitionBuilder expBuilder =
+ BeanDefinitionBuilder.genericBeanDefinition(EntityRegexPredicate.class);
+ expBuilder.addConstructorArgValue(ElementSupport.getElementContentAsString(child));
+ ruleMap.put(expBuilder.getBeanDefinition(), forRule);
} else if (ElementSupport.isElementNamed(child, AbstractMetadataProviderParser.METADATA_NAMESPACE,
"ConditionRef")) {
final ManagedList<XMLObject> forRule = new ManagedList<>(accumulator.size());
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParser.java
index b992c61c..da17d25c 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParser.java
@@ -25,6 +25,7 @@ import org.opensaml.core.xml.io.Unmarshaller;
import org.opensaml.core.xml.io.UnmarshallingException;
import org.opensaml.core.xml.util.XMLObjectSupport;
import org.opensaml.saml.common.profile.logic.EntityIdPredicate;
+import org.opensaml.saml.common.profile.logic.EntityRegexPredicate;
import org.opensaml.saml.metadata.resolver.filter.impl.EntityAttributesFilter;
import org.opensaml.saml.saml2.core.Attribute;
import org.slf4j.Logger;
@@ -139,6 +140,14 @@ public class EntityAttributesFilterParser extends AbstractMetadataFilterParser {
forRule.addAll(accumulator);
ruleMap.put(ScriptTypeBeanParser.parseScriptType(ScriptedPredicate.class, child).getBeanDefinition(),
forRule);
+ } else if (ElementSupport.isElementNamed(child, AbstractMetadataProviderParser.METADATA_NAMESPACE,
+ "EntityRegex")) {
+ final ManagedList<Attribute> forRule = new ManagedList<>(accumulator.size());
+ forRule.addAll(accumulator);
+ final BeanDefinitionBuilder regexBuilder =
+ BeanDefinitionBuilder.genericBeanDefinition(EntityRegexPredicate.class);
+ regexBuilder.addConstructorArgValue(ElementSupport.getElementContentAsString(child));
+ ruleMap.put(regexBuilder.getBeanDefinition(), forRule);
}
child = ElementSupport.getNextSiblingElement(child);
}
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParser.java
index ab4803a9..84b47730 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParser.java
@@ -21,6 +21,7 @@ import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.opensaml.saml.common.profile.logic.EntityIdPredicate;
+import org.opensaml.saml.common.profile.logic.EntityRegexPredicate;
import org.opensaml.saml.metadata.resolver.filter.impl.NameIDFormatFilter;
import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
@@ -105,6 +106,14 @@ public class NameIDFormatFilterParser extends AbstractMetadataFilterParser {
forRule.addAll(accumulator);
ruleMap.put(ScriptTypeBeanParser.parseScriptType(ScriptedPredicate.class, child).getBeanDefinition(),
forRule);
+ } else if (ElementSupport.isElementNamed(child, AbstractMetadataProviderParser.METADATA_NAMESPACE,
+ "EntityRegex")) {
+ final ManagedList<String> forRule = new ManagedList<>(accumulator.size());
+ forRule.addAll(accumulator);
+ final BeanDefinitionBuilder regexBuilder =
+ BeanDefinitionBuilder.genericBeanDefinition(EntityRegexPredicate.class);
+ regexBuilder.addConstructorArgValue(ElementSupport.getElementContentAsString(child));
+ ruleMap.put(regexBuilder.getBeanDefinition(), forRule);
}
child = ElementSupport.getNextSiblingElement(child);
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/PredicateFilterParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/PredicateFilterParser.java
index d4443020..265a6cf5 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/PredicateFilterParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/PredicateFilterParser.java
@@ -25,6 +25,7 @@ import org.opensaml.saml.common.profile.logic.EntityAttributesPredicate;
import org.opensaml.saml.common.profile.logic.EntityAttributesPredicate.Candidate;
import org.opensaml.saml.common.profile.logic.EntityGroupNamePredicate;
import org.opensaml.saml.common.profile.logic.EntityIdPredicate;
+import org.opensaml.saml.common.profile.logic.EntityRegexPredicate;
import org.opensaml.saml.metadata.resolver.filter.impl.PredicateFilter;
import org.slf4j.Logger;
import org.springframework.beans.factory.BeanCreationException;
@@ -115,6 +116,7 @@ public class PredicateFilterParser extends AbstractMetadataFilterParser {
// Track which predicates have to be built.
final BeanDefinitionBuilder entityIdPredicateBuilder = parseEntityPredicate(element);
+ final BeanDefinitionBuilder entityRegexPredicateBuilder = parseEntityRegexPredicate(element);
final BeanDefinitionBuilder groupPredicateBuilder = parseGroupPredicate(element);
final BeanDefinitionBuilder tagPredicateBuilder = parseTagPredicate(element);
final BeanDefinitionBuilder mappedTagPredicateBuilder = parseMappedTagPredicate(element);
@@ -124,6 +126,9 @@ public class PredicateFilterParser extends AbstractMetadataFilterParser {
if (entityIdPredicateBuilder != null) {
count++;
}
+ if (entityRegexPredicateBuilder != null) {
+ count++;
+ }
if (groupPredicateBuilder != null) {
count++;
}
@@ -138,10 +143,12 @@ public class PredicateFilterParser extends AbstractMetadataFilterParser {
}
if (count == 0) {
- throw new BeanCreationException("No Entity, Group, Tag, or ConditionScript element found");
+ throw new BeanCreationException("No Entity, EntityRegex, Group, Tag, or ConditionScript element found");
} else if (count == 1) {
if (entityIdPredicateBuilder != null) {
return entityIdPredicateBuilder.getBeanDefinition();
+ } else if (entityRegexPredicateBuilder != null) {
+ return entityRegexPredicateBuilder.getBeanDefinition();
} else if (groupPredicateBuilder != null) {
return groupPredicateBuilder.getBeanDefinition();
} else if (tagPredicateBuilder != null) {
@@ -151,7 +158,7 @@ public class PredicateFilterParser extends AbstractMetadataFilterParser {
} else if (scriptPredicateBuilder != null) {
return scriptPredicateBuilder.getBeanDefinition();
} else {
- throw new BeanCreationException("No Entity, Group, Tag, or ConditionScript element found");
+ throw new BeanCreationException("No Entity, EntityRegex, Group, Tag, or ConditionScript element found");
}
} else {
final BeanDefinitionBuilder orBuilder =
@@ -160,6 +167,9 @@ public class PredicateFilterParser extends AbstractMetadataFilterParser {
if (entityIdPredicateBuilder != null) {
managedList.add(entityIdPredicateBuilder.getBeanDefinition());
}
+ if (entityRegexPredicateBuilder != null) {
+ managedList.add(entityRegexPredicateBuilder.getBeanDefinition());
+ }
if (groupPredicateBuilder != null) {
managedList.add(groupPredicateBuilder.getBeanDefinition());
}
@@ -200,6 +210,40 @@ public class PredicateFilterParser extends AbstractMetadataFilterParser {
return null;
}
+ /**
+ * Parse EntityRegex elements into a builder for an {@link EntityRegexPredicate}.
+ *
+ * @param element root element to parse under
+ *
+ * @return builder for the predicate, or null if none needed
+ */
+ @Nullable public BeanDefinitionBuilder parseEntityRegexPredicate(@Nonnull final Element element) {
+ final List<Element> expList =
+ ElementSupport.getChildElementsByTagNameNS(element, AbstractMetadataProviderParser.METADATA_NAMESPACE,
+ "EntityRegex");
+ if (expList.isEmpty()) {
+ return null;
+ } else if (expList.size() == 1) {
+ final BeanDefinitionBuilder builder =
+ BeanDefinitionBuilder.genericBeanDefinition(EntityRegexPredicate.class);
+ builder.addConstructorArgValue(ElementSupport.getElementContentAsString(expList.get(0)));
+ return builder;
+ } else {
+ final BeanDefinitionBuilder orBuilder =
+ BeanDefinitionBuilder.rootBeanDefinition(PredicateSupport.class, "or");
+ final ManagedList<BeanDefinition> managedList = new ManagedList<>(expList.size());
+ for (final Element e : expList) {
+ assert e != null;
+ final BeanDefinitionBuilder builder =
+ BeanDefinitionBuilder.genericBeanDefinition(EntityRegexPredicate.class);
+ builder.addConstructorArgValue(ElementSupport.getElementContentAsString(e));
+ managedList.add(builder.getBeanDefinition());
+ }
+ orBuilder.addConstructorArgValue(managedList);
+ return orBuilder;
+ }
+ }
+
/**
* Parse Group elements into a builder for an {@link EntityGroupNamePredicate}.
*
diff --git a/shib-metadata-spring/src/main/resources/schema/shibboleth-metadata.xsd b/shib-metadata-spring/src/main/resources/schema/shibboleth-metadata.xsd
index 83bd4c1d..7798f3ba 100644
--- a/shib-metadata-spring/src/main/resources/schema/shibboleth-metadata.xsd
+++ b/shib-metadata-spring/src/main/resources/schema/shibboleth-metadata.xsd
@@ -1082,7 +1082,15 @@
<annotation>
<documentation>
An entityID to identify an EntityDescriptor to add all the preceding
- Attribute elements to.
+ Attribute elements to.
+ </documentation>
+ </annotation>
+ </element>
+ <element name="EntityRegex" type="shibmd:string">
+ <annotation>
+ <documentation>
+ A regular expression to apply to EntityDescriptor's entityID to add all the preceding
+ Attribute elements to.
</documentation>
</annotation>
</element>
@@ -1090,7 +1098,7 @@
<annotation>
<documentation>
The ID of a Spring bean to inject as a condition Predicate to identify one
- or more EntityDescriptors to add all the preceding Attribute elements to.
+ or more EntityDescriptors to add all the preceding Attribute elements to.
</documentation>
</annotation>
</element>
@@ -1098,7 +1106,7 @@
<annotation>
<documentation>
A script implementing Predicate<EntityDescriptor> to identify one
- or more EntityDescriptors to add all the preceding Attribute elements to.
+ or more EntityDescriptors to add all the preceding Attribute elements to.
</documentation>
</annotation>
</element>
@@ -1135,11 +1143,19 @@
</documentation>
</annotation>
</element>
+ <element name="EntityRegex" type="shibmd:string">
+ <annotation>
+ <documentation>
+ A regular expression to apply to EntityDescriptor's entityID to add all the preceding
+ Attribute elements to.
+ </documentation>
+ </annotation>
+ </element>
<element name="ConditionRef" type="shibmd:string">
<annotation>
<documentation>
The ID of a Spring bean to inject as a condition Predicate to identify one
- or more EntityDescriptors to add all the preceding NameIDFormat elements to.
+ or more EntityDescriptors to add all the preceding NameIDFormat elements to.
</documentation>
</annotation>
</element>
@@ -1147,7 +1163,7 @@
<annotation>
<documentation>
A script implementing Predicate<EntityDescriptor> to identify one
- or more EntityDescriptors to add all the preceding Attribute elements to.
+ or more EntityDescriptors to add all the preceding Attribute elements to.
</documentation>
</annotation>
</element>
@@ -1181,14 +1197,22 @@
<element name="Entity" type="shibmd:string">
<annotation>
<documentation>
- An entityID to use in a predicate that matches on entityID.
+ An entityID to use in a predicate that matches on entityID.
+ </documentation>
+ </annotation>
+ </element>
+ <element name="EntityRegex" type="shibmd:string">
+ <annotation>
+ <documentation>
+ A regular expression to apply to EntityDescriptor's entityID to add all the preceding
+ Attribute elements to.
</documentation>
</annotation>
</element>
<element name="Group" type="shibmd:string">
<annotation>
<documentation>
- A name to use in a predicate that matches on EntitiesDescriptor group/containment.
+ A name to use in a predicate that matches on EntitiesDescriptor group/containment.
</documentation>
</annotation>
</element>
@@ -1282,7 +1306,15 @@
<annotation>
<documentation>
An entityID to identify an EntityDescriptor to add all the preceding
- extension elements to.
+ extension elements to.
+ </documentation>
+ </annotation>
+ </element>
+ <element name="EntityRegex" type="shibmd:string">
+ <annotation>
+ <documentation>
+ A regular expression to apply to EntityDescriptor's entityID to add all the preceding
+ Attribute elements to.
</documentation>
</annotation>
</element>
@@ -1290,7 +1322,7 @@
<annotation>
<documentation>
The ID of a Spring bean to inject as a condition Predicate to identify one
- or more EntityDescriptors to add all the preceding extension elements to.
+ or more EntityDescriptors to add all the preceding extension elements to.
</documentation>
</annotation>
</element>
@@ -1298,7 +1330,7 @@
<annotation>
<documentation>
A script implementing Predicate<EntityDescriptor> to identify one
- or more EntityDescriptors to add all the preceding extension elements to.
+ or more EntityDescriptors to add all the preceding extension elements to.
</documentation>
</annotation>
</element>
diff --git a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParserTest.java b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParserTest.java
index 0327f8bc..04043d7c 100644
--- a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParserTest.java
+++ b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParserTest.java
@@ -46,7 +46,12 @@ public class AlgorithmFilterParserTest extends AbstractMetadataParserTest {
@Test
public void test() throws ResolverException, IOException {
- doTest("filter/algorithm.xml", "filter/algorithmBeans.xml");
+ doTest("filter/algorithm.xml");
+ }
+
+ @Test
+ public void testRegex() throws ResolverException, IOException {
+ doTest("filter/algorithmRegex.xml");
}
@Test
diff --git a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParserTest.java b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParserTest.java
index f7b70464..84504b94 100644
--- a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParserTest.java
+++ b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParserTest.java
@@ -39,6 +39,11 @@ public class EntityAttributesFilterParserTest extends AbstractMetadataParserTest
doTest("filter/entityAttributes.xml", "filter/entityAttributesBeans.xml");
}
+ @Test
+ public void testRegex() throws ResolverException, IOException {
+ doTest("filter/entityAttributesRegex.xml", "filter/entityAttributesBeans.xml");
+ }
+
@Test
public void testFilterScript() throws ResolverException, IOException {
doTest("filter/entityAttributesWithScript.xml", "filter/entityAttributesBeans.xml");
diff --git a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParserTest.java b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParserTest.java
index 8d65518c..7dece2a7 100644
--- a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParserTest.java
+++ b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParserTest.java
@@ -40,6 +40,11 @@ public class NameIDFormatFilterParserTest extends AbstractMetadataParserTest {
doTest("filter/nameIDFormat.xml");
}
+ @Test
+ public void testRegex() throws ResolverException, IOException {
+ doTest("filter/nameIDFormatRegex.xml");
+ }
+
@Test
public void testWithScript() throws ResolverException, IOException {
doTest("filter/nameIDFormatWithScript.xml");
diff --git a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/PredicateFilterParserTest.java b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/PredicateFilterParserTest.java
index e1e7a0be..95c0c5c2 100644
--- a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/PredicateFilterParserTest.java
+++ b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/PredicateFilterParserTest.java
@@ -21,6 +21,7 @@ import org.opensaml.saml.common.profile.logic.EntityAttributesPredicate;
import org.opensaml.saml.common.profile.logic.EntityAttributesPredicate.Candidate;
import org.opensaml.saml.common.profile.logic.EntityGroupNamePredicate;
import org.opensaml.saml.common.profile.logic.EntityIdPredicate;
+import org.opensaml.saml.common.profile.logic.EntityRegexPredicate;
import org.opensaml.saml.metadata.resolver.MetadataResolver;
import org.opensaml.saml.metadata.resolver.filter.impl.PredicateFilter;
import org.opensaml.saml.metadata.resolver.filter.impl.PredicateFilter.Direction;
@@ -62,6 +63,15 @@ public class PredicateFilterParserTest extends AbstractMetadataParserTest {
Assert.assertTrue(condition.getEntityIds().contains("urn:bar"));
}
+ @Test
+ public void entityRegex() throws IOException {
+ final PredicateFilter filter = getBean(PredicateFilter.class, "filter/predicateEntityRegex.xml");
+ Assert.assertNotNull(filter);
+ Assert.assertEquals(filter.getDirection(), Direction.INCLUDE);
+
+ final EntityRegexPredicate condition = (EntityRegexPredicate) filter.getCondition();
+ }
+
@Test
public void group() throws IOException {
final PredicateFilter filter = getBean(PredicateFilter.class, "filter/predicateGroup.xml");
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/algorithmBeans.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/algorithmBeans.xml
deleted file mode 100644
index 0fcb592f..00000000
--- a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/algorithmBeans.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p"
- xmlns:c="http://www.springframework.org/schema/c" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
-
- default-init-method="initialize" default-lazy-init="true">
-
- <bean id="predicate.AlwaysFalse" class="net.shibboleth.shared.logic.PredicateSupport" factory-method="alwaysFalse" />
-
-</beans>
\ No newline at end of file
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/algorithmRegex.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/algorithmRegex.xml
new file mode 100644
index 00000000..eea92426
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/algorithmRegex.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataProvider xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
+ xmlns:metadata="urn:mace:shibboleth:2.0:metadata"
+ xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
+ xmlns:alg="urn:oasis:names:tc:SAML:metadata:algsupport"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd
+ urn:oasis:names:tc:SAML:2.0:assertion http://docs.oasis-open.org/security/saml/v2.0/saml-schema-assertion-2.0.xsd
+ urn:oasis:names:tc:SAML:2.0:metadata http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd
+ urn:oasis:names:tc:SAML:metadata:algsupport http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-metadata-algsupport-v1.0.xsd
+ http://www.w3.org/2009/xmlenc11# http://www.w3.org/TR/2013/REC-xmlenc-core1-20130411/xenc-schema-11.xsd"
+
+ failFastInitialization="false" requireValidMetadata="false"
+
+ id="algorithms" xsi:type="metadata:InlineMetadataProvider">
+
+ <metadata:MetadataFilter xsi:type="metadata:Algorithm">
+ <alg:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+ <alg:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512" />
+ <alg:SigningMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
+ <alg:SigningMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512" />
+ <EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#rsa-oaep">
+ <MGF xmlns="http://www.w3.org/2009/xmlenc11#"
+ Algorithm="http://www.w3.org/2009/xmlenc11#mgf1sha256" />
+ <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#"
+ Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+ </EncryptionMethod>
+ <metadata:EntityRegex>^https://sp(3|4)?\.example\.org/sp/shibboleth$</metadata:EntityRegex>
+ </metadata:MetadataFilter>
+
+ <EntitiesDescriptor Name="ukgroup">
+ <EntityDescriptor
+ entityID="https://sp.example.org/sp/shibboleth">
+ <SPSSODescriptor
+ protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:oasis:names:tc:SAML:2.0:protocol">
+
+ <AssertionConsumerService
+ Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign"
+ Location="https://sp.example.org/Shibboleth.sso/SAML2/POST-SimpleSign"
+ index="5" />
+ </SPSSODescriptor>
+ </EntityDescriptor>
+
+ <EntityDescriptor
+ entityID="https://sp2.example.org/sp/shibboleth">
+ <SPSSODescriptor
+ protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:oasis:names:tc:SAML:2.0:protocol">
+
+ <AssertionConsumerService
+ Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign"
+ Location="https://sp2.example.org/Shibboleth.sso/SAML2/POST-SimpleSign"
+ index="5" />
+ </SPSSODescriptor>
+ </EntityDescriptor>
+
+ <EntityDescriptor
+ entityID="https://sp4.example.org/sp/shibboleth">
+ <SPSSODescriptor
+ protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:oasis:names:tc:SAML:2.0:protocol">
+
+ <AssertionConsumerService
+ Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign"
+ Location="https://sp4.example.org/Shibboleth.sso/SAML2/POST-SimpleSign"
+ index="5" />
+ </SPSSODescriptor>
+ </EntityDescriptor>
+ </EntitiesDescriptor>
+</metadata:MetadataProvider>
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/entityAttributesRegex.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/entityAttributesRegex.xml
new file mode 100644
index 00000000..4fd0baeb
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/entityAttributesRegex.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataProvider xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
+ xmlns:metadata="urn:mace:shibboleth:2.0:metadata"
+ xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd
+ urn:oasis:names:tc:SAML:2.0:assertion http://docs.oasis-open.org/security/saml/v2.0/saml-schema-assertion-2.0.xsd"
+ failFastInitialization="false" requireValidMetadata="false"
+ id="entityAttributes" xsi:type="metadata:ResourceBackedMetadataProvider" resourceRef="MetadataResource">
+
+ <metadata:MetadataFilter xsi:type="metadata:EntityAttributes">
+ <metadata:AttributeFilterRef>predicate.NotRandS</metadata:AttributeFilterRef>
+ <saml:Attribute Name="foo">
+ <saml:AttributeValue>fooValue</saml:AttributeValue>
+ </saml:Attribute>
+ <saml:Attribute Name="bar">
+ <saml:AttributeValue>barValue</saml:AttributeValue>
+ </saml:Attribute>
+ <metadata:EntityRegex>^https://sp(3|4)?\.example\.org/sp/shibboleth$</metadata:EntityRegex>
+ </metadata:MetadataFilter>
+</metadata:MetadataProvider>
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/nameIDFormatRegex.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/nameIDFormatRegex.xml
new file mode 100644
index 00000000..d2f9e85c
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/nameIDFormatRegex.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataProvider xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
+ xmlns:metadata="urn:mace:shibboleth:2.0:metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd
+ urn:oasis:names:tc:SAML:2.0:metadata http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd"
+
+ failFastInitialization="false" requireValidMetadata="false"
+
+ id="nameIDFormat" xsi:type="metadata:InlineMetadataProvider">
+ <metadata:MetadataFilter xsi:type="metadata:NameIDFormat" removeExistingFormats="true">
+ <metadata:Format>foo</metadata:Format>
+ <metadata:EntityRegex>^https://sp(4)?\.example\.org/sp/shibboleth$</metadata:EntityRegex>
+ <metadata:Format>bar</metadata:Format>
+ <metadata:EntityRegex>^https://sp2\.example\.org/sp/shibboleth$</metadata:EntityRegex>
+ </metadata:MetadataFilter>
+
+ <EntitiesDescriptor Name="ukgroup">
+ <EntityDescriptor ID="uk001502"
+ entityID="https://sp.example.org/sp/shibboleth">
+
+ <SPSSODescriptor
+ protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:oasis:names:tc:SAML:2.0:protocol">
+
+ <AssertionConsumerService
+ Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign"
+ Location="https://sp.example.org/Shibboleth.sso/SAML2/POST-SimpleSign"
+ index="5" />
+ </SPSSODescriptor>
+ </EntityDescriptor>
+
+ <EntityDescriptor ID="uk001503"
+ entityID="https://sp2.example.org/sp/shibboleth">
+
+ <SPSSODescriptor
+ protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:oasis:names:tc:SAML:2.0:protocol">
+ <NameIDFormat>baz</NameIDFormat>
+ <AssertionConsumerService
+ Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign"
+ Location="https://sp2.example.org/Shibboleth.sso/SAML2/POST-SimpleSign"
+ index="5" />
+ </SPSSODescriptor>
+ </EntityDescriptor>
+ </EntitiesDescriptor>
+</metadata:MetadataProvider>
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateEntityRegex.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateEntityRegex.xml
new file mode 100644
index 00000000..14880043
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateEntityRegex.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataFilter xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
+ xmlns:metadata="urn:mace:shibboleth:2.0:metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd
+ urn:oasis:names:tc:SAML:2.0:metadata http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd"
+
+ xsi:type="metadata:Predicate" direction="include" removeEmptyEntitiesDescriptors="false">
+
+ <metadata:EntityRegex>^urn:(.)+$</metadata:EntityRegex>
+</metadata:MetadataFilter>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list