diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutFilter.java index a9b4390..a9c8504 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutFilter.java @@ -45,6 +45,7 @@ public final class SingleSignOutFilter extends AbstractConfigurationFilter { handler.setArtifactParameterName(getPropertyFromInitParams(filterConfig, "artifactParameterName", "ticket")); handler.setLogoutParameterName(getPropertyFromInitParams(filterConfig, "logoutParameterName", "logoutRequest")); handler.setArtifactParameterOverPost(parseBoolean(getPropertyFromInitParams(filterConfig, "artifactParameterOverPost", "false"))); + handler.setEagerlyCreateSessions(parseBoolean(getPropertyFromInitParams(filterConfig, "eagerlyCreateSessions", "true"))); } handler.init(); } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHandler.java b/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHandler.java index 31f3e24..a1c1fa5 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHandler.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHandler.java @@ -54,6 +54,8 @@ public final class SingleSignOutHandler { private boolean artifactParameterOverPost = false; + private boolean eagerlyCreateSessions = true; + private List safeParameters; @@ -83,6 +85,10 @@ public final class SingleSignOutHandler { this.logoutParameterName = name; } + public void setEagerlyCreateSessions(final boolean eagerlyCreateSessions) { + this.eagerlyCreateSessions = eagerlyCreateSessions; + } + /** * Initializes the component for use. */ @@ -128,7 +134,12 @@ public final class SingleSignOutHandler { * @param request HTTP request containing an authentication token. */ public void recordSession(final HttpServletRequest request) { - final HttpSession session = request.getSession(true); + final HttpSession session = request.getSession(this.eagerlyCreateSessions); + + if (session == null) { + log.debug("No session currently exists (and none created). Cannot record session information for single sign out."); + return; + } final String token = CommonUtils.safeGetParameter(request, this.artifactParameterName, this.safeParameters); if (log.isDebugEnabled()) {