[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