spSingleLogoutInit.jsp revision ea968a2519a7cf9282263e27b81ad7eb6706ef3a
2N/A $Id: spSingleLogoutInit.jsp,v 1.13 2009/10/15 00:01:11 exu Exp $
2N/A<%@ page import="com.sun.identity.plugin.session.SessionManager" %>
2N/A<%@ page import="com.sun.identity.plugin.session.SessionException" %>
2N/A<%@ page import="com.sun.identity.saml.common.SAMLUtils" %>
2N/A<%@ page import="com.sun.identity.saml2.common.SAML2Utils" %>
2N/A<%@ page import="com.sun.identity.saml2.common.SAML2Constants" %>
2N/A<%@ page import="com.sun.identity.saml2.jaxb.entityconfig.SPSSOConfigElement" %>
2N/A<%@ page import="com.sun.identity.saml2.meta.SAML2MetaManager" %>
2N/A<%@ page import="com.sun.identity.saml2.meta.SAML2MetaUtils" %>
2N/A<%@ page import="com.sun.identity.saml2.common.SAML2Exception" %>
2N/A<%@ page import="com.sun.identity.saml2.profile.LogoutUtil" %>
2N/A<%@ page import="com.sun.identity.saml2.profile.SPCache" %>
2N/A<%@ page import="com.sun.identity.saml2.profile.SPSingleLogout" %>
2N/A<%@ page import="java.util.HashMap" %>
2N/A<%@ page import="java.util.List" %>
2N/A<%@ page import="org.owasp.esapi.ESAPI" %>
2N/A<%@ page import="java.io.PrintWriter" %>
if (RelayState == null || RelayState.isEmpty()) {
if (!ESAPI.validator().isValidInput("RelayState", RelayState, "HTTPQueryString", 2000, true)) {
ssoToken = SessionManager.getProvider().getSession(request);
if (SAML2Utils.debug.messageEnabled()) {
SAML2Utils.debug.message("No session.");
if (!SPCache.isFedlet) {
if (RelayState != null && !RelayState.isEmpty()
&& ESAPI.validator().isValidInput("RelayState", RelayState, "URL", 2000, true)) {
response.sendRedirect(RelayState);
<jsp:forward page="/saml2/jsp/default.jsp?message=spSloSuccess"/>
String[] values = SessionManager.getProvider().
getProperty(ssoToken, SAML2Constants.SP_METAALIAS);
if (values != null && values.length > 0) {
spEntityID = request.getParameter("spEntityID");
if ((spEntityID == null) || (spEntityID.length() == 0)) {
if ((spMetaAliases != null) && !spMetaAliases.isEmpty()) {
metaAlias = (String) spMetaAliases.get(0);
manager.getSPSSOConfig("/", spEntityID);
metaAlias = spConfig.getMetaAlias();
SessionManager.getProvider().invalidateSession(
if (SAML2Utils.debug.messageEnabled()) {
SAML2Utils.debug.message("No session.");
if (RelayState != null && SAML2Utils.isRelayStateURLValid(request, RelayState, SAML2Constants.SP_ROLE)
&& ESAPI.validator().isValidInput("RelayState", RelayState, "URL", 2000, true)) {
response.sendRedirect(RelayState);
<jsp:forward page="/saml2/jsp/default.jsp?message=spSloSuccess"/>
String idpEntityID = request.getParameter("idpEntityID");
String binding = LogoutUtil.getSLOBindingInfo(request, metaAlias,
SAML2Constants.SP_ROLE, idpEntityID);
spEntityID = manager.getEntityByMetaAlias(metaAlias);
String realm = SAML2MetaUtils.getRealmByMetaAlias(metaAlias);
* this parameter is /realm_name/SP_name.
if (SPCache.isFedlet) {
String sessionIndex = request.getParameter("SessionIndex");
if ((sessionIndex == null) || (sessionIndex.length() == 0)) {
SAML2Utils.bundle.getString("nullSessionIndex"));
paramsMap.put("SessionIndex", sessionIndex);
String nameID = request.getParameter("NameIDValue");
if ((nameID == null) || (nameID.length() == 0)) {
SAML2Utils.bundle.getString("nullNameID"));
spEntityID = manager.getEntityByMetaAlias(metaAlias);
SAMLUtils.sendError(request, response,
SAML2Utils.bundle.getString("nullIDPEntityID"));
paramsMap.put("metaAlias", metaAlias);
paramsMap.put("idpEntityID", idpEntityID);
if (RelayState == null || RelayState.isEmpty()) {
RelayState = SAML2Utils.getAttributeValueFromSSOConfig(
realm, spEntityID, SAML2Constants.SP_ROLE,
SPSingleLogout.initiateLogoutRequest(request,response, new PrintWriter(out, true), binding, paramsMap);
if (RelayState != null && !RelayState.isEmpty()
&& ESAPI.validator().isValidInput("RelayState", RelayState, "URL", 2000, true)) {
response.sendRedirect(RelayState);
<jsp:forward page="/saml2/jsp/default.jsp?message=spSloSuccess"/>
SAML2Utils.debug.error("Error sending Logout Request " , sse);
SAML2Utils.bundle.getString("LogoutRequestCreationError") + " " +
sse.getMessage());
SAML2Utils.debug.error("Error initializing Request ",e);
SAML2Utils.bundle.getString("LogoutRequestCreationError") + " " +
e.getMessage());