[java-identity-provider] 08/10: IDP-1429 Deprecate ignoreCase for StringPolicy Parser
Rod Widdowson
rdw at steadingsoftware.com
Thu Apr 11 09:00:00 EDT 2019
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=192076f2919c0d91ea192cfe8aeb089ae8401173
commit 192076f2919c0d91ea192cfe8aeb089ae8401173
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Wed Apr 10 15:27:15 2019 +0100
IDP-1429 Deprecate ignoreCase for StringPolicy Parser
https://issues.shibboleth.net/jira/browse/IDP-1429
replacement is caseSensitive
---
.../impl/AbstractStringPolicyRuleParser.java | 32 ++++++++++++++---
.../policy/AttributeIssuerRuleParserTest.java | 5 ++-
.../policy/AttributeRequesterRuleParserTest.java | 41 ++++++++++++++++++++++
.../policy/ProxiedRequesterRuleParserTest.java | 3 +-
.../filter/policyrule/attributeIssuer.xml | 3 +-
.../filter/policyrule/attributeRequester.xml | 2 +-
...uteRequester.xml => attributeRequesterBoth.xml} | 2 +-
...Requester.xml => attributeRequesterDefault.xml} | 2 +-
...uester.xml => attributeRequesterDeprecated.xml} | 0
.../filter/policyrule/proxiedRequester.xml | 2 +-
10 files changed, 76 insertions(+), 16 deletions(-)
diff --git a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java
index 27ec5bd..ff51560 100644
--- a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java
+++ b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java
@@ -19,18 +19,25 @@ package net.shibboleth.idp.attribute.filter.spring.policyrule.impl;
import javax.annotation.Nonnull;
-import net.shibboleth.idp.attribute.filter.spring.policyrule.BasePolicyRuleParser;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.ParserContext;
import org.w3c.dom.Element;
+import net.shibboleth.idp.attribute.filter.spring.policyrule.BasePolicyRuleParser;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
+
/**
* Base class for string matching functors of natural type PolicyRule.
*/
public abstract class AbstractStringPolicyRuleParser extends BasePolicyRuleParser {
+ /** Logger. */
+ private final Logger log = LoggerFactory.getLogger(AbstractStringPolicyRuleParser.class);
+
/** {@inheritDoc} */
@Override protected void doNativeParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
@Nonnull final BeanDefinitionBuilder builder) {
@@ -38,8 +45,23 @@ public abstract class AbstractStringPolicyRuleParser extends BasePolicyRuleParse
builder.addPropertyValue("matchString", StringSupport.trimOrNull(element.getAttributeNS(null, "value")));
- if (element.hasAttributeNS(null, "ignoreCase")) {
- builder.addPropertyValue("ignoreCase", element.getAttributeNS(null, "ignoreCase"));
+ if (element.hasAttributeNS(null, "caseSensitive")) {
+ if (element.hasAttributeNS(null, "ignoreCase")) {
+ log.warn("{} \"caseSensitive\" and \"ignoreCase\" specified, \"caseSensitive\" used ",
+ parserContext.getReaderContext().getResource().getDescription());
+ }
+
+ builder.addPropertyValue("caseSensitive",
+ StringSupport.trimOrNull(element.getAttributeNS(null, "caseSensitive")));
+
+ } else if (element.hasAttributeNS(null, "ignoreCase")) {
+ DeprecationSupport.warnOnce(ObjectType.ELEMENT,
+ "ignoreCase",
+ parserContext.getReaderContext().getResource().getDescription(),
+ "caseSensitive");
+
+ builder.addPropertyValue("ignoreCase",
+ StringSupport.trimOrNull(element.getAttributeNS(null, "ignoreCase")));
}
}
}
\ No newline at end of file
diff --git a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeIssuerRuleParserTest.java b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeIssuerRuleParserTest.java
index 86d3aa3..ef6cf3c 100644
--- a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeIssuerRuleParserTest.java
+++ b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeIssuerRuleParserTest.java
@@ -18,7 +18,7 @@
package net.shibboleth.idp.attribute.filter.spring.policy;
import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.assertFalse;
import org.testng.annotations.Test;
@@ -43,7 +43,6 @@ public class AttributeIssuerRuleParserTest extends BaseAttributeFilterParserTest
final AttributeIssuerPolicyRule arRule = (AttributeIssuerPolicyRule) rule;
assertEquals(arRule.getMatchString(), "urn:example:org:idp:foo");
- assertTrue(arRule.isIgnoreCase());
+ assertFalse(arRule.isCaseSensitive());
}
-
}
diff --git a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeRequesterRuleParserTest.java b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeRequesterRuleParserTest.java
index 596a7a2..5a77fa5 100644
--- a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeRequesterRuleParserTest.java
+++ b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeRequesterRuleParserTest.java
@@ -68,8 +68,49 @@ public class AttributeRequesterRuleParserTest extends BaseAttributeFilterParserT
final AttributeRequesterPolicyRule arRule = (AttributeRequesterPolicyRule) rule;
assertEquals(arRule.getMatchString(), "https://service.example.edu/shibboleth-sp");
+ assertTrue(arRule.isCaseSensitive());
+ }
+
+ @Test public void both() throws ComponentInitializationException {
+ final PolicyRequirementRule rule = getPolicyRule("attributeRequesterBoth.xml");
+
+ AttributeFilterContext filterContext = DataSources.populatedFilterContext("principal", "issuer", "http://example.org");
+ assertEquals(rule.matches(filterContext), Tristate.FALSE);
+ filterContext = DataSources.populatedFilterContext("principal", "issuer", "https://service.example.edu/shibboleth-sp");
+ assertEquals(rule.matches(filterContext), Tristate.TRUE);
+
+ final AttributeRequesterPolicyRule arRule = (AttributeRequesterPolicyRule) rule;
+ assertEquals(arRule.getMatchString(), "https://service.example.edu/shibboleth-sp");
+ assertFalse(arRule.isCaseSensitive());
+ }
+
+ @SuppressWarnings("deprecation")
+ @Test public void deprecated() throws ComponentInitializationException {
+ final PolicyRequirementRule rule = getPolicyRule("attributeRequesterDeprecated.xml");
+
+ AttributeFilterContext filterContext = DataSources.populatedFilterContext("principal", "issuer", "http://example.org");
+ assertEquals(rule.matches(filterContext), Tristate.FALSE);
+ filterContext = DataSources.populatedFilterContext("principal", "issuer", "https://service.example.edu/shibboleth-sp");
+ assertEquals(rule.matches(filterContext), Tristate.TRUE);
+
+ final AttributeRequesterPolicyRule arRule = (AttributeRequesterPolicyRule) rule;
+ assertEquals(arRule.getMatchString(), "https://service.example.edu/shibboleth-sp");
assertFalse(arRule.isIgnoreCase());
}
+
+ @Test public void testDefault() throws ComponentInitializationException {
+ final PolicyRequirementRule rule = getPolicyRule("attributeRequesterDefault.xml");
+
+ AttributeFilterContext filterContext = DataSources.populatedFilterContext("principal", "issuer", "http://example.org");
+ assertEquals(rule.matches(filterContext), Tristate.FALSE);
+ filterContext = DataSources.populatedFilterContext("principal", "issuer", "https://service.example.edu/shibboleth-sp");
+ assertEquals(rule.matches(filterContext), Tristate.TRUE);
+
+ final AttributeRequesterPolicyRule arRule = (AttributeRequesterPolicyRule) rule;
+ assertEquals(arRule.getMatchString(), "https://service.example.edu/shibboleth-sp");
+ assertTrue(arRule.isCaseSensitive());
+ }
+
@Test public void matcher() throws ComponentInitializationException {
final Matcher matcher = getMatcher("attributeRequester.xml");
diff --git a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/ProxiedRequesterRuleParserTest.java b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/ProxiedRequesterRuleParserTest.java
index e5ff867..1b14d99 100644
--- a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/ProxiedRequesterRuleParserTest.java
+++ b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/ProxiedRequesterRuleParserTest.java
@@ -18,7 +18,6 @@
package net.shibboleth.idp.attribute.filter.spring.policy;
import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import java.util.Arrays;
@@ -66,7 +65,7 @@ public class ProxiedRequesterRuleParserTest extends BaseAttributeFilterParserTes
final ProxiedRequesterPolicyRule arRule = (ProxiedRequesterPolicyRule) rule;
assertEquals(arRule.getMatchString(), "https://service.example.edu/shibboleth-sp");
- assertFalse(arRule.isIgnoreCase());
+ assertTrue(arRule.isCaseSensitive());
}
@Test public void matcher() throws ComponentInitializationException {
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeIssuer.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeIssuer.xml
index f9240fb..641ae03 100644
--- a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeIssuer.xml
+++ b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeIssuer.xml
@@ -1,5 +1,4 @@
<AttributeFilterPolicy id="MostBasicExample" xmlns="urn:mace:shibboleth:2.0:afp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd">
- <PolicyRequirementRule xsi:type="Issuer" value="urn:example:org:idp:foo"
- ignoreCase="true" />
+ <PolicyRequirementRule xsi:type="Issuer" value="urn:example:org:idp:foo" caseSensitive="false" />
</AttributeFilterPolicy>
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
index 4531c4d..a853559 100644
--- a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
+++ b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
@@ -1,4 +1,4 @@
<AttributeFilterPolicy id="MostBasicExample" xmlns="urn:mace:shibboleth:2.0:afp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd" >
- <PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" ignoreCase="false" />
+ <PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" caseSensitive="true" />
</AttributeFilterPolicy>
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterBoth.xml
similarity index 81%
copy from idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
copy to idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterBoth.xml
index 4531c4d..feec6dc 100644
--- a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
+++ b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterBoth.xml
@@ -1,4 +1,4 @@
<AttributeFilterPolicy id="MostBasicExample" xmlns="urn:mace:shibboleth:2.0:afp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd" >
- <PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" ignoreCase="false" />
+ <PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" ignoreCase="false" caseSensitive="false"/>
</AttributeFilterPolicy>
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterDefault.xml
similarity index 86%
copy from idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
copy to idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterDefault.xml
index 4531c4d..4e34d85 100644
--- a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
+++ b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterDefault.xml
@@ -1,4 +1,4 @@
<AttributeFilterPolicy id="MostBasicExample" xmlns="urn:mace:shibboleth:2.0:afp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd" >
- <PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" ignoreCase="false" />
+ <PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" />
</AttributeFilterPolicy>
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterDeprecated.xml
similarity index 100%
copy from idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
copy to idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterDeprecated.xml
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/proxiedRequester.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/proxiedRequester.xml
index 03b4392..fc0c377 100644
--- a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/proxiedRequester.xml
+++ b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/proxiedRequester.xml
@@ -1,4 +1,4 @@
<AttributeFilterPolicy id="MostBasicExample" xmlns="urn:mace:shibboleth:2.0:afp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd" >
- <PolicyRequirementRule xsi:type="ProxiedRequester" value="https://service.example.edu/shibboleth-sp" ignoreCase="false" />
+ <PolicyRequirementRule xsi:type="ProxiedRequester" value="https://service.example.edu/shibboleth-sp" caseSensitive="true" />
</AttributeFilterPolicy>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list