[java-identity-provider COMMIT] in /trunk: idp-cas-impl/src/main/java/net/shibboleth/idp/cas/config/ValidateConfigura...

noreply at shibboleth.net noreply at shibboleth.net
Mon Jul 20 10:16:28 EDT 2015


Author: serac
Date: Mon Jul 20 10:16:28 2015
New Revision: 7643

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=7643&view=rev
Log:
IDP-772 Allow setting cas:user from attribute value.

https://issues.shibboleth.net/jira/browse/IDP-772
Define new profile configuration knob to allow setting CAS username
returned in ticket validation response from filtered IdP attribute
value.

Added:
    trunk/idp-conf/src/test/resources/test/test-attribute-filter-cas.xml
Modified:
    trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/config/ValidateConfiguration.java
    trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/ExtractAttributesAction.java
    trunk/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ServiceValidateFlowTest.java
    trunk/idp-conf/src/test/resources/test/test-cas-beans.xml
    trunk/idp-conf/src/test/resources/test/test-relying-party-cas.xml

Modified: trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/config/ValidateConfiguration.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/config/ValidateConfiguration.java?rev=7643&r1=7642&r2=7643&view=diff
==============================================================================
--- trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/config/ValidateConfiguration.java	(original)
+++ trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/config/ValidateConfiguration.java	Mon Jul 20 10:16:28 2015
@@ -23,6 +23,7 @@
 import net.shibboleth.utilities.java.support.security.IdentifierGenerationStrategy;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import java.util.Comparator;
 
 /**
@@ -54,6 +55,10 @@
     /** Component responsible for enforcing ticket requestor matches ticket validator. */
     @Nonnull
     private Comparator<String> serviceComparator = new DefaultServiceComparator();
+
+    /** Name of IdP attribute to use for user returned in CAS ticket validation response. */
+    @Nullable
+    private String userAttribute;
 
 
     /** Creates a new instance. */
@@ -98,4 +103,19 @@
     protected int getDefaultTicketLength() {
         return DEFAULT_TICKET_LENGTH;
     }
+
+    /** @return Name of IdP attribute to use for username returned in CAS ticket validation response. */
+    @Nullable
+    public String getUserAttribute() {
+        return userAttribute;
+    }
+
+    /**
+     * Sets the name of IdP attribute to use for username returned in CAS ticket validation response.
+     *
+     * @param attribute Attribute name to use
+     */
+    public void setUserAttribute(@Nullable String attribute) {
+        this.userAttribute = attribute;
+    }
 }

Modified: trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/ExtractAttributesAction.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/ExtractAttributesAction.java?rev=7643&r1=7642&r2=7643&view=diff
==============================================================================
--- trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/ExtractAttributesAction.java	(original)
+++ trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/ExtractAttributesAction.java	Mon Jul 20 10:16:28 2015
@@ -22,6 +22,8 @@
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.attribute.context.AttributeContext;
+import net.shibboleth.idp.cas.config.ConfigLookupFunction;
+import net.shibboleth.idp.cas.config.ValidateConfiguration;
 import net.shibboleth.idp.cas.protocol.ProtocolError;
 import net.shibboleth.idp.cas.protocol.TicketValidationRequest;
 import net.shibboleth.idp.cas.protocol.TicketValidationResponse;
@@ -36,6 +38,7 @@
 import org.springframework.webflow.execution.RequestContext;
 
 import javax.annotation.Nonnull;
+import java.util.List;
 
 /**
  * Extracts {@link IdPAttribute}s from a populated {@link AttributeContext} and places them in the
@@ -65,6 +68,10 @@
                     new SessionContextPrincipalLookupFunction(),
                     new ChildContextLookup<ProfileRequestContext, SessionContext>(SessionContext.class));
 
+    /** Profile configuration lookup function. */
+    private final ConfigLookupFunction<ValidateConfiguration> configLookupFunction =
+            new ConfigLookupFunction<>(ValidateConfiguration.class);
+
 
     @Nonnull
     @Override
@@ -77,9 +84,27 @@
             throw new IllegalStateException("AttributeContext not found in profile request context.");
         }
 
-        final String principal = principalLookupFunction.apply(profileRequestContext);
+        final ValidateConfiguration validateConfiguration = configLookupFunction.apply(profileRequestContext);
+        if (validateConfiguration == null) {
+            throw new IllegalArgumentException("Cannot locate ValidateConfiguration");
+        }
+
+        final String principal;
+        if (validateConfiguration.getUserAttribute() != null) {

[... 136 lines stripped ...]


More information about the commits mailing list