From 3b6ccaac0a4475cfb49d1a7ef4f5ab77e258b915 Mon Sep 17 00:00:00 2001 From: Scott Battaglia Date: Sun, 11 Sep 2011 15:11:43 +0000 Subject: [PATCH] CASC-154 added method to AbstractCasFilter that can be overwritten in ticket validation and authentication to support other methods of retrieving the ticket. --- .../client/authentication/AuthenticationFilter.java | 2 +- .../authentication/Saml11AuthenticationFilter.java | 6 +++--- .../org/jasig/cas/client/util/AbstractCasFilter.java | 10 ++++++++++ .../validation/AbstractTicketValidationFilter.java | 6 +----- .../validation/Saml11TicketValidationFilter.java | 6 ++---- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AuthenticationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AuthenticationFilter.java index 46cb95f..9f42a0f 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AuthenticationFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AuthenticationFilter.java @@ -109,7 +109,7 @@ public class AuthenticationFilter extends AbstractCasFilter { } final String serviceUrl = constructServiceUrl(request, response); - final String ticket = CommonUtils.safeGetParameter(request,getArtifactParameterName()); + final String ticket = retrieveTicketFromRequest(request); final boolean wasGatewayed = this.gatewayStorage.hasGatewayedAlready(request, serviceUrl); if (CommonUtils.isNotBlank(ticket) || wasGatewayed) { diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/Saml11AuthenticationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/Saml11AuthenticationFilter.java index 30246e9..b0db0c2 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/Saml11AuthenticationFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/Saml11AuthenticationFilter.java @@ -25,15 +25,15 @@ import javax.servlet.ServletException; /** * Extension to the default Authentication filter that sets the required SAML1.1 artifact parameter name and service parameter name. *

- * Note, the "final" on this class helps ensure the compliance required in the initInternal method. + * Note, as of 3.3, the final keyword was removed to allow you to override the method to retrieve tickets, per CASC-154s * * @author Scott Battaglia * @since 3.1.12 * @version $Revision$ $Date$ */ -public final class Saml11AuthenticationFilter extends AuthenticationFilter { +public class Saml11AuthenticationFilter extends AuthenticationFilter { - protected void initInternal(final FilterConfig filterConfig) throws ServletException { + protected final void initInternal(final FilterConfig filterConfig) throws ServletException { super.initInternal(filterConfig); log.warn("SAML1.1 compliance requires the [artifactParameterName] and [serviceParameterName] to be set to specified values."); diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractCasFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractCasFilter.java index 3b8ea19..79c94b3 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractCasFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractCasFilter.java @@ -151,4 +151,14 @@ public abstract class AbstractCasFilter extends AbstractConfigurationFilter { public final String getServiceParameterName() { return this.serviceParameterName; } + + /** + * Template method to allow you to change how you retrieve the ticket. + * + * @param request the HTTP ServletRequest. CANNOT be NULL. + * @return the ticket if its found, null otherwise. + */ + protected String retrieveTicketFromRequest(final HttpServletRequest request) { + return CommonUtils.safeGetParameter(request,getArtifactParameterName()); + } } 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 4556bb9..71b62e7 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 @@ -158,7 +158,7 @@ public abstract class AbstractTicketValidationFilter extends AbstractCasFilter { final HttpServletRequest request = (HttpServletRequest) servletRequest; final HttpServletResponse response = (HttpServletResponse) servletResponse; - final String ticket = CommonUtils.safeGetParameter(request, getArtifactParameterName()); + final String ticket = retrieveTicketFromRequest(request); if (CommonUtils.isNotBlank(ticket)) { if (log.isDebugEnabled()) { @@ -219,8 +219,4 @@ public abstract class AbstractTicketValidationFilter extends AbstractCasFilter { public final void setUseSession(final boolean useSession) { this.useSession = useSession; } - - - - } 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 d1fb00b..26a2f74 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 @@ -27,21 +27,19 @@ import javax.servlet.ServletException; *

* Deployers can provide the "casServerUrlPrefix" and "tolerance" properties of the Saml11TicketValidator via the * context or filter init parameters. - *

- * Note, the "final" on this class helps ensure the compliance required in the initInternal method. * * @author Scott Battaglia * @version $Revision$ $Date$ * @since 3.1 */ -public final class Saml11TicketValidationFilter extends AbstractTicketValidationFilter { +public class Saml11TicketValidationFilter extends AbstractTicketValidationFilter { public Saml11TicketValidationFilter() { setArtifactParameterName("SAMLart"); setServiceParameterName("TARGET"); } - protected void initInternal(final FilterConfig filterConfig) throws ServletException { + protected final void initInternal(final FilterConfig filterConfig) throws ServletException { super.initInternal(filterConfig); log.warn("SAML1.1 compliance requires the [artifactParameterName] and [serviceParameterName] to be set to specified values.");