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

noreply at shibboleth.net noreply at shibboleth.net
Thu Oct 29 12:45:14 EDT 2015


Author: serac
Date: Thu Oct 29 12:45:14 2015
New Revision: 7904

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=7904&view=rev
Log:
IDP-842 Fix CAS protocol error handling.

https://issues.shibboleth.net/jira/browse/IDP-842
Ensure the TicketValidationRequest is always populated in the PRC, even in
cases where required parameters are missing. Add negative test coverage.

Modified:
    trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/InitializeProxyAction.java
    trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/InitializeValidateAction.java
    trunk/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/LoginFlowInitialAuthnTest.java
    trunk/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/LoginFlowTest.java
    trunk/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ProxyFlowTest.java
    trunk/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/SamlValidateFlowTest.java
    trunk/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ServiceValidateFlowTest.java

Modified: trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/InitializeProxyAction.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/InitializeProxyAction.java?rev=7904&r1=7903&r2=7904&view=diff
==============================================================================
--- trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/InitializeProxyAction.java	(original)
+++ trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/InitializeProxyAction.java	Thu Oct 29 12:45:14 2015
@@ -73,27 +73,32 @@
             final @Nonnull ProfileRequestContext profileRequestContext) {
 
         final ParameterMap params = springRequestContext.getRequestParameters();
-        final String service = params.get(ProtocolParam.TargetService.id());
+        String service = params.get(ProtocolParam.TargetService.id());
+        Event result = null;
         if (service == null) {
-            return ProtocolError.ServiceNotSpecified.event(this);
+            service = ProtocolError.ServiceNotSpecified.getDetailCode();
+            result = ProtocolError.ServiceNotSpecified.event(this);
         }
-        final String ticket = params.get(ProtocolParam.Pgt.id());
+        String ticket = params.get(ProtocolParam.Pgt.id());
         if (ticket == null) {
-            return ProtocolError.TicketNotSpecified.event(this);
+            ticket = ProtocolError.TicketNotSpecified.getDetailCode();
+            result = ProtocolError.TicketNotSpecified.event(this);
         }
         final ProxyTicketRequest proxyTicketRequest = new ProxyTicketRequest(ticket, service);
         setCASRequest(profileRequestContext, proxyTicketRequest);
-        try {
-            log.debug("Fetching proxy-granting ticket {}", proxyTicketRequest.getPgt());
-            final ProxyGrantingTicket pgt = ticketService.fetchProxyGrantingTicket(proxyTicketRequest.getPgt());
-            if (pgt == null) {
-                return ProtocolError.TicketExpired.event(this);
+        if (result == null) {
+            try {
+                log.debug("Fetching proxy-granting ticket {}", proxyTicketRequest.getPgt());
+                final ProxyGrantingTicket pgt = ticketService.fetchProxyGrantingTicket(proxyTicketRequest.getPgt());
+                if (pgt == null) {
+                    return ProtocolError.TicketExpired.event(this);
+                }
+                setCASTicket(profileRequestContext, pgt);
+            } catch (RuntimeException e) {
+                log.error("Failed looking up " + proxyTicketRequest.getPgt(), e);
+                return ProtocolError.TicketRetrievalError.event(this);
             }
-            setCASTicket(profileRequestContext, pgt);
-        } catch (RuntimeException e) {
-            log.error("Failed looking up " + proxyTicketRequest.getPgt(), e);
-            return ProtocolError.TicketRetrievalError.event(this);
         }
-        return null;
+        return result;
     }
 }

Modified: trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/InitializeValidateAction.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/InitializeValidateAction.java?rev=7904&r1=7903&r2=7904&view=diff
==============================================================================
--- trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/InitializeValidateAction.java	(original)
+++ trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/InitializeValidateAction.java	Thu Oct 29 12:45:14 2015
@@ -48,13 +48,16 @@
             final @Nonnull ProfileRequestContext profileRequestContext) {
 
         final ParameterMap params = springRequestContext.getRequestParameters();
-        final String service = params.get(ProtocolParam.Service.id());
+        String service = params.get(ProtocolParam.Service.id());
+        Event result = null;
         if (service == null) {

[... 238 lines stripped ...]


More information about the commits mailing list