[java-identity-provider COMMIT] in /trunk: idp-cas-api/src/main/java/net/shibboleth/idp/cas/protocol/ProtocolError.ja...

noreply at shibboleth.net noreply at shibboleth.net
Thu Nov 6 15:47:10 EST 2014


Author: serac
Date: Thu Nov  6 15:47:10 2014
New Revision: 6855

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=6855&view=rev
Log:
Fail on broken CAS proxy chain.

Modified:
    trunk/idp-cas-api/src/main/java/net/shibboleth/idp/cas/protocol/ProtocolError.java
    trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/BuildProxyChainAction.java
    trunk/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/BuildProxyChainActionTest.java
    trunk/idp-conf/src/main/resources/system/flows/cas/proxyValidate/proxyValidate-flow.xml
    trunk/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ProxyValidateFlowTest.java

Modified: trunk/idp-cas-api/src/main/java/net/shibboleth/idp/cas/protocol/ProtocolError.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-cas-api/src/main/java/net/shibboleth/idp/cas/protocol/ProtocolError.java?rev=6855&r1=6854&r2=6855&view=diff
==============================================================================
--- trunk/idp-cas-api/src/main/java/net/shibboleth/idp/cas/protocol/ProtocolError.java (original)
+++ trunk/idp-cas-api/src/main/java/net/shibboleth/idp/cas/protocol/ProtocolError.java Thu Nov  6 15:47:10 2014
@@ -26,6 +26,9 @@
  * @author Marvin S. Addison
  */
 public enum ProtocolError {
+
+    /** One or more proxy-granting tickets in proxy chain have expired. */
+    BrokenProxyChain("INVALID_TICKET", "E_BROKEN_PROXY_CHAIN"),
 
     /** Illegal state error. */
     IllegalState("INTERNAL_ERROR", "E_ILLEGAL_STATE"),

Modified: trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/BuildProxyChainAction.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/BuildProxyChainAction.java?rev=6855&r1=6854&r2=6855&view=diff
==============================================================================
--- trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/BuildProxyChainAction.java (original)
+++ trunk/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/BuildProxyChainAction.java Thu Nov  6 15:47:10 2014
@@ -35,7 +35,8 @@
  *
  * <ul>
  *     <li>{@link Events#Proceed proceed}</li>
- *     <li>{@link ProtocolError#InvalidTicketType invalidTicketTypew}</li>
+ *     <li>{@link ProtocolError#BrokenProxyChain brokenProxyChain}</li>
+ *     <li>{@link ProtocolError#InvalidTicketType invalidTicketType}</li>
  * </ul>
  *
  * @author Marvin S. Addison
@@ -63,8 +64,8 @@
     @Nonnull
     @Override
     protected Event doExecute(
-    final @Nonnull RequestContext springRequestContext,
-    final @Nonnull ProfileRequestContext profileRequestContext) {
+        final @Nonnull RequestContext springRequestContext,
+        final @Nonnull ProfileRequestContext profileRequestContext) {
 
         final TicketValidationResponse response = getCASResponse(profileRequestContext);
         final Ticket ticket = getCASTicket(profileRequestContext);
@@ -76,6 +77,9 @@
         String pgtId = pt.getPgtId();
         do {
             pgt = ticketService.fetchProxyGrantingTicket(pgtId);
+            if (pgt == null) {
+                return ProtocolError.BrokenProxyChain.event(this);
+            }
             response.addProxy(pgt.getService());
             pgtId = pgt.getParentId();
         } while (pgtId != null);

Modified: trunk/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/BuildProxyChainActionTest.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/BuildProxyChainActionTest.java?rev=6855&r1=6854&r2=6855&view=diff
==============================================================================
--- trunk/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/BuildProxyChainActionTest.java (original)
+++ trunk/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/BuildProxyChainActionTest.java Thu Nov  6 15:47:10 2014
@@ -18,6 +18,7 @@
 package net.shibboleth.idp.cas.flow;
 
 import net.shibboleth.idp.cas.config.ProxyConfiguration;
+import net.shibboleth.idp.cas.protocol.ProtocolError;
 import net.shibboleth.idp.cas.protocol.TicketValidationRequest;
 import net.shibboleth.idp.cas.protocol.TicketValidationResponse;
 import net.shibboleth.idp.cas.ticket.ProxyGrantingTicket;
@@ -56,4 +57,25 @@
         assertEquals(response.getProxies().get(0), "proxiedByA");
         assertEquals(response.getProxies().get(1), "proxyA");
     }
+
+
+    @Test
+    public void testBrokenProxyChain() throws Exception {
+        final ServiceTicket st = createServiceTicket("proxyA", true);
+        final ProxyGrantingTicket pgtA = createProxyGrantingTicket(st);
+        final ProxyTicket ptA = createProxyTicket(pgtA, "proxiedByA");
+        final ProxyGrantingTicket pgtB = createProxyGrantingTicket(ptA);
+        final ProxyTicket ptB = createProxyTicket(pgtB, "proxiedByB");
+        final TicketValidationRequest request = new TicketValidationRequest("proxiedByB", ptB.getId());
+        final TicketValidationResponse response = new TicketValidationResponse();
+

[... 60 lines stripped ...]


More information about the commits mailing list