[java-identity-provider] branch maint-3.4 updated: IDP-1472 explicitly warn on bad attribute names

Rod Widdowson rdw at steadingsoftware.com
Fri Sep 6 06:34:05 EDT 2019


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch maint-3.4
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=f626592025bf1c8cede9df24cbe84d32e3fd503a

The following commit(s) were added to refs/heads/maint-3.4 by this push:
       new  f626592   IDP-1472 explicitly warn on bad attribute names
f626592 is described below

commit f626592025bf1c8cede9df24cbe84d32e3fd503a
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Fri Sep 6 11:32:46 2019 +0100

    IDP-1472 explicitly warn on bad attribute names
    
    https://issues.shibboleth.net/jira/browse/IDP-1472
    
    in addition to non printers we now warn on single quotes,  [curly] brackets and percent
---
 .../resolver/AbstractAttributeDefinition.java      | 34 +++++++++++++++++-----
 .../resolver/AbstractAttributeDefinitionTest.java  |  8 +++++
 2 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
index df1eb8e..9b3f757 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
@@ -30,6 +30,13 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+
 import net.shibboleth.idp.attribute.AttributeEncoder;
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
@@ -45,14 +52,6 @@ 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;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.util.PatternMatchUtils;
-
-import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-
 /** Base class for attribute definition resolver plugins. */
 @ThreadSafe
 public abstract class AbstractAttributeDefinition extends AbstractResolverPlugin<IdPAttribute> implements
@@ -209,6 +208,18 @@ public abstract class AbstractAttributeDefinition extends AbstractResolverPlugin
         sourceAttributeID = StringSupport.trimOrNull(attributeId);
     }
 
+    /** Detect whether the attribute contains 'bad characters'.
+     * @return if the name is deprecated
+     */
+    private boolean hasDeprecatedId() {
+        @NotEmpty final String id = StringSupport.trimOrNull(getId());
+        return id == null ||
+                id.indexOf('\'') >= 0 ||
+                id.indexOf('%') >= 0 ||
+                id.indexOf('{') >= 0 ||
+                id.indexOf('}') >= 0;
+    }
+
     /** {@inheritDoc} */
     @Override
     protected void doInitialize() throws ComponentInitializationException {
@@ -237,6 +248,13 @@ public abstract class AbstractAttributeDefinition extends AbstractResolverPlugin
                     null);
             
         }
+        if (hasDeprecatedId()) {
+            DeprecationSupport.warnOnce(ObjectType.CONFIGURATION,
+                    "Use of IdP Attributes names with with special characters (\\'\\\"%{})", 
+                    getLogPrefix(), 
+                    null);
+            log.debug("{} - deprecated character in attribute name", getId());
+        }
     }
 
     /**
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
index 43a6f0a..b201794 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
@@ -220,6 +220,14 @@ public class AbstractAttributeDefinitionTest {
         definition.initialize();
         definition = new MockAttributeDefinition("Name\rWith\tnonprinters", (IdPAttribute) null);
         definition.initialize();
+        definition = new MockAttributeDefinition("Namebad1\'", (IdPAttribute) null);
+        definition.initialize();
+        definition = new MockAttributeDefinition("Namebad2%", (IdPAttribute) null);
+        definition.initialize();
+        definition = new MockAttributeDefinition("Namebad3{", (IdPAttribute) null);
+        definition.initialize();
+        definition = new MockAttributeDefinition("Namebad4}", (IdPAttribute) null);
+        definition.initialize();
     }
     
     @Test public void initDestroyValidate() throws ComponentInitializationException {

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


More information about the commits mailing list