From daac416c7fcd5734f1380503f38f68c757d4dd26 Mon Sep 17 00:00:00 2001 From: Scott Battaglia Date: Tue, 29 Jan 2008 13:44:26 +0000 Subject: [PATCH] CASC-34 added template methods and documentation on when they are called. --- .../AbstractTicketValidationFilter.java | 27 +++++++++++++++++++ .../Cas10TicketValidationFilter.java | 4 +-- ...0ProxyReceivingTicketValidationFilter.java | 23 ++++++++-------- .../Saml11TicketValidationFilter.java | 4 +-- 4 files changed, 42 insertions(+), 16 deletions(-) diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractTicketValidationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractTicketValidationFilter.java index 5f2abf4..49a05de 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractTicketValidationFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractTicketValidationFilter.java @@ -81,6 +81,30 @@ public abstract class AbstractTicketValidationFilter extends AbstractCasFilter { return true; } + /** + * Template method that gets executed if ticket validation succeeds. Override if you want additional behavior to occur + * if ticket validation succeeds. This method is called after all ValidationFilter processing required for a successful authentication + * occurs. + * + * @param request the HttpServletRequest. + * @param response the HttpServletResponse. + * @param assertion the successful Assertion from the server. + */ + protected void onSuccessfulValidation(final HttpServletRequest request, final HttpServletResponse response, final Assertion assertion) { + // nothing to do here. + } + + /** + * Template method that gets executed if validation fails. This method is called right after the exception is caught from the ticket validator + * but before any of the processing of the exception occurs. + * + * @param request the HttpServletRequest. + * @param response the HttpServletResponse. + */ + protected void onFailedValidation(final HttpServletRequest request, final HttpServletResponse response) { + // nothing to do here. + } + public final void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { if (!preFilter(servletRequest, servletResponse, filterChain)) { @@ -112,10 +136,13 @@ public abstract class AbstractTicketValidationFilter extends AbstractCasFilter { request.getSession().setAttribute(CONST_CAS_ASSERTION, assertion); } + onSuccessfulValidation(request, response, assertion); } catch (final TicketValidationException e) { response.setStatus(HttpServletResponse.SC_FORBIDDEN); log.warn(e, e); + onFailedValidation(request, response); + if (this.exceptionOnValidationFailure) { throw new ServletException(e); } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas10TicketValidationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas10TicketValidationFilter.java index ab98906..7cf3a29 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas10TicketValidationFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas10TicketValidationFilter.java @@ -11,9 +11,9 @@ import javax.servlet.FilterConfig; * @version $Revision$ $Date$ * @since 3.1 */ -public final class Cas10TicketValidationFilter extends AbstractTicketValidationFilter { +public class Cas10TicketValidationFilter extends AbstractTicketValidationFilter { - protected TicketValidator getTicketValidator(final FilterConfig filterConfig) { + protected final TicketValidator getTicketValidator(final FilterConfig filterConfig) { final String casUrlServerPrefix = getPropertyFromInitParams(filterConfig, "casUrlServerPrefix", null); final Cas10TicketValidator validator = new Cas10TicketValidator(casUrlServerPrefix); validator.setRenew(Boolean.parseBoolean(getPropertyFromInitParams(filterConfig, "renew", "false"))); diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyReceivingTicketValidationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyReceivingTicketValidationFilter.java index 9e53aa0..179e71c 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyReceivingTicketValidationFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyReceivingTicketValidationFilter.java @@ -1,5 +1,10 @@ package org.jasig.cas.client.validation; +import org.jasig.cas.client.proxy.Cas20ProxyRetriever; +import org.jasig.cas.client.proxy.ProxyGrantingTicketStorage; +import org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl; +import org.jasig.cas.client.util.CommonUtils; + import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; @@ -7,12 +12,6 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - -import org.jasig.cas.client.proxy.Cas20ProxyRetriever; -import org.jasig.cas.client.proxy.ProxyGrantingTicketStorage; -import org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl; -import org.jasig.cas.client.util.CommonUtils; - import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -27,7 +26,7 @@ import java.util.List; * @since 3.1 * */ -public final class Cas20ProxyReceivingTicketValidationFilter extends AbstractTicketValidationFilter { +public class Cas20ProxyReceivingTicketValidationFilter extends AbstractTicketValidationFilter { /** * Constant representing the ProxyGrantingTicket IOU Request Parameter. @@ -65,7 +64,7 @@ public final class Cas20ProxyReceivingTicketValidationFilter extends AbstractTic * @param filterConfig the Filter Configuration object. * @return a fully constructed TicketValidator. */ - protected TicketValidator getTicketValidator(final FilterConfig filterConfig) { + protected final TicketValidator getTicketValidator(final FilterConfig filterConfig) { final String allowAnyProxy = getPropertyFromInitParams(filterConfig, "acceptAnyProxy", null); final String allowedProxyChains = getPropertyFromInitParams(filterConfig, "allowedProxyChains", null); final String casServerUrlPrefix = getPropertyFromInitParams(filterConfig, "casServerUrlPrefix", null); @@ -86,7 +85,7 @@ public final class Cas20ProxyReceivingTicketValidationFilter extends AbstractTic return validator; } - protected List constructListOfProxies(final String proxies) { + protected final List constructListOfProxies(final String proxies) { if (CommonUtils.isBlank(proxies)) { return new ArrayList(); } @@ -101,7 +100,7 @@ public final class Cas20ProxyReceivingTicketValidationFilter extends AbstractTic /** * This processes the ProxyReceptor request before the ticket validation code executes. */ - protected boolean preFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { + protected final boolean preFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { final HttpServletRequest request = (HttpServletRequest) servletRequest; final HttpServletResponse response = (HttpServletResponse) servletResponse; final String requestUri = request.getRequestURI(); @@ -136,11 +135,11 @@ public final class Cas20ProxyReceivingTicketValidationFilter extends AbstractTic return false; } - public void setProxyReceptorUrl(final String proxyReceptorUrl) { + public final void setProxyReceptorUrl(final String proxyReceptorUrl) { this.proxyReceptorUrl = proxyReceptorUrl; } - public void setProxyGrantingTicketStorage(final ProxyGrantingTicketStorage proxyGrantingTicketStorage) { + public final void setProxyGrantingTicketStorage(final ProxyGrantingTicketStorage proxyGrantingTicketStorage) { this.proxyGrantingTicketStorage = proxyGrantingTicketStorage; } } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidationFilter.java index c9714d9..6a5ecce 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidationFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidationFilter.java @@ -12,14 +12,14 @@ import javax.servlet.FilterConfig; * @version $Revision$ $Date$ * @since 3.1 */ -public final class Saml11TicketValidationFilter extends AbstractTicketValidationFilter { +public class Saml11TicketValidationFilter extends AbstractTicketValidationFilter { public Saml11TicketValidationFilter() { setArtifactParameterName("SAMLart"); setServiceParameterName("TARGET"); } - protected TicketValidator getTicketValidator(final FilterConfig filterConfig) { + protected final TicketValidator getTicketValidator(final FilterConfig filterConfig) { final Saml11TicketValidator validator = new Saml11TicketValidator(getPropertyFromInitParams(filterConfig, "casServerUrlPrefix", null)); final String tolerance = getPropertyFromInitParams(filterConfig, "tolerance", "1000"); validator.setTolerance(Long.parseLong(tolerance));