[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
Wed Mar 18 16:09:30 EDT 2015


Author: serac
Date: Wed Mar 18 16:09:17 2015
New Revision: 7429

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=7429&view=rev
Log:
IDP-614 Add option to ignore URI path params in CAS ticket validation.

Allow configuration of ignored path parameters in relying party config
(ValidationConfiguration). Ignore jsessionid parameter by default.

Added:
    trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/service/DefaultServiceComparator.java
    trunk/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/service/DefaultServiceComparatorTest.java
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/ValidateTicketAction.java
    trunk/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/ValidateTicketActionTest.java

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=7429&r1=7428&r2=7429&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 Wed Mar 18 16:09:17 2015
@@ -17,11 +17,13 @@
 
 package net.shibboleth.idp.cas.config;
 
+import net.shibboleth.idp.cas.service.DefaultServiceComparator;
 import net.shibboleth.idp.cas.ticket.TicketIdentifierGenerationStrategy;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.security.IdentifierGenerationStrategy;
 
 import javax.annotation.Nonnull;
+import java.util.Comparator;
 
 /**
  * CAS protocol configuration that applies to the following ticket validation URIs:
@@ -49,6 +51,10 @@
     @Nonnull
     private IdentifierGenerationStrategy pgtIOUGenerator = new TicketIdentifierGenerationStrategy("PGTIOU", 50);
 
+    /** Component responsible for enforcing ticket requestor matches ticket validator. */
+    @Nonnull
+    private Comparator<String> serviceComparator = new DefaultServiceComparator();
+
 
     /** Creates a new instance. */
     public ValidateConfiguration() {
@@ -72,6 +78,15 @@
         this.pgtIOUGenerator = Constraint.isNotNull(generator, "PGTIOU generator cannot be null");
     }
 
+    @Nonnull
+    public Comparator<String> getServiceComparator() {
+        return serviceComparator;
+    }
+
+    public void setServiceComparator(@Nonnull Comparator<String> serviceComparator) {
+        this.serviceComparator = serviceComparator;
+    }
+
     @Override
     @Nonnull
     protected String getDefaultTicketPrefix() {

Modified: trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/ValidateTicketAction.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/ValidateTicketAction.java?rev=7429&r1=7428&r2=7429&view=diff
==============================================================================
--- trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/ValidateTicketAction.java (original)
+++ trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/ValidateTicketAction.java Wed Mar 18 16:09:17 2015
@@ -17,8 +17,10 @@
 
 package net.shibboleth.idp.cas.flow;
 
+import net.shibboleth.idp.cas.config.ConfigLookupFunction;
 import net.shibboleth.idp.cas.config.LoginConfiguration;
 import net.shibboleth.idp.cas.config.ProxyConfiguration;
+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;
@@ -53,6 +55,10 @@
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(ValidateTicketAction.class);
 
+    /** Profile configuration lookup function. */
+    private final ConfigLookupFunction<ValidateConfiguration> configLookupFunction =
+            new ConfigLookupFunction<>(ValidateConfiguration.class);
+
     /** Manages CAS tickets. */
     @Nonnull
     private final TicketService ticketService;
@@ -72,6 +78,12 @@
     protected Event doExecute(
             final @Nonnull RequestContext springRequestContext,
             final @Nonnull ProfileRequestContext profileRequestContext) {
+
+        final ValidateConfiguration config = configLookupFunction.apply(profileRequestContext);
+        if (config == null) {
+            log.info("Ticket validation configuration undefined");
+            return ProtocolError.IllegalState.event(this);
+        }
 
         final TicketValidationRequest request = getCASRequest(profileRequestContext);
         final Ticket ticket;
@@ -97,7 +109,7 @@
             return ProtocolError.TicketExpired.event(this);
         }
 
-        if (!ticket.getService().equalsIgnoreCase(request.getService())) {

[... 102 lines stripped ...]


More information about the commits mailing list