a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * of the Common Development and Distribution License
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * (the License). You may not use this file except in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * compliance with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the License at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If applicable, add the following below the CDDL Header,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with the fields enclosed by brackets [] replaced by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * your own identifying information:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: FSReturnSessionManager.java,v 1.4 2009/01/28 05:35:07 ww203982 Exp $
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington * Portions Copyright 2015 ForgeRock AS.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.federation.services.logout;
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunningtonimport com.sun.identity.federation.common.FSUtils;
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunningtonimport com.sun.identity.federation.common.IFSConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Contains session information for logout.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static Map instanceMap = new HashMap();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private Map userAndProviderMap = new HashMap();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSReturnSessionManager(): Called." +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " A new instance of FSReturnSessionManager created");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the provider info where logout was initiated for
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * a certain userDN. This is so that control of flow can be returned back to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * that provider to display status page of that provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userDN user whose provider information is to be retrieved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return HashMap containing <code>providerId</code>,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>relaystate</code>, <code>sessionIndex</code>, etc.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public HashMap getUserProviderInfo(String userDN){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSReturnSessionManager::getUserProviderInfo");
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington userDN = DN.valueOf(userDN).toString().toLowerCase();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return (HashMap)userAndProviderMap.get(userDN);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Set logout status so that control of flow can be returned back to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * that provider to display status page of that provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param logoutStatus logout status to be saved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userDN user whose provider information is to be retrieved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setLogoutStatus(String logoutStatus,String userDN){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSReturnSessionManager::setLogoutStatus");
a14393818a78c503f7715c393044b33c86e90195Phill Cunnington HashMap userMap = (HashMap)userAndProviderMap.get(userDN);
a14393818a78c503f7715c393044b33c86e90195Phill Cunnington userMap.remove(IFSConstants.LOGOUT_STATUS);
a14393818a78c503f7715c393044b33c86e90195Phill Cunnington userMap.put(IFSConstants.LOGOUT_STATUS, logoutStatus);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the provider info where logout was initiated
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * for a user. Other values that are needed when returning control back
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * like <code>relayState</code> is also stored.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userDN user whose provider information is to be retrieved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerId providerId where logout was initiated for this user
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param isIDP the role of the source provider
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param relayState url must be sent back in return
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param responseTo <code>InResponseTo</code> value
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Entered FSReturnSessionManager::setUserProviderInfo");
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington userDN = DN.valueOf(userDN).toString().toLowerCase();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster valMap.put(IFSConstants.LOGOUT_RELAY_STATE, relayState);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster valMap.put(IFSConstants.RESPONSE_TO, responseTo);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (userAndProviderMap) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Removes provider information for user. This function is called prior to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * returning after logout.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userDN user whose logout is being performed
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void removeUserProviderInfo(String userDN){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Entered FSReturnSessionManager::removeUserProviderInfo");
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington userDN = DN.valueOf(userDN).toString().toLowerCase();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (userAndProviderMap) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the singleton instance of <code>FSReturnSessionManager</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * There is a single instance for each hosted provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return metaAlias the hosted provider whose instance needs to be
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the singleton <code>FSReturnSessionManager</code> instance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static FSReturnSessionManager getInstance(String metaAlias){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Entered FSReturnSessionManager::getInstance");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (FSReturnSessionManager.class) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (FSReturnSessionManager)instanceMap.get(metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Constructing a new instance"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " of FSReturnSessionManager");