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: FSSessionManager.java,v 1.6 2009/08/03 18:18:36 bigfatrat Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.SystemConfigurationUtil;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.FSUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.FSAuthnRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.meta.IDFFMetaManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.meta.IDFFMetaUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.meta.jaxb.IDPDescriptorType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.meta.jaxb.SPDescriptorType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.monitoring.FedMonAgent;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.monitoring.FedMonIDFFSvc;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.monitoring.MonitorManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.session.SessionManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.session.SessionProvider;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The class <code>FSSessionManager</code> is a <code>final</code> class
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * that provides interfaces to manage <code>FSSession</code>s.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * It is a singleton class; an instance of this class can be obtained by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * calling <code>FSSessionManager.getInstance()</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // property name for request cleanup internal
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final String REQUEST_CLEANUP_INTERVAL =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.federation.request.cleanup_interval";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // default value for request cleanup internal
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final long DEFAULT_REQUEST_CLEANUP_INTERVAL = 300000;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // property name for request time out
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.federation.request.timeout";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // default value for request time out
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final long DEFAULT_REQUEST_TIMEOUT = 300000;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Singleton instance of FSSessionManager
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static Map instanceMap = new HashMap ();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // used to store list of FSSession for a user
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // key : user DN, value List of FSSession object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private FSRequestCleanUpRunnable cRunnable = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * For managing session statistics.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Stats sessStats = Stats.getInstance("libIDFFSessionMaps");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String temp = SystemConfigurationUtil.getProperty(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (temp == null || temp.trim().length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cleanupInterval = DEFAULT_REQUEST_CLEANUP_INTERVAL;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cleanupInterval = Integer.parseInt(temp) * 1000;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Unable to get fed request cleanup prop.", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cleanupInterval = DEFAULT_REQUEST_CLEANUP_INTERVAL;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String temp = SystemConfigurationUtil.getProperty(REQUEST_TIMEOUT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (temp == null || temp.trim().length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestTimeout = Integer.parseInt(temp) * 1000;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Unable to get fed request timeout prop.", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSSessionManager, cleanup interval="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + cleanupInterval + " ms, timeout=" + requestTimeout + " ms");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the <code>RelayState</code> value which maps
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * to the request ID.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>RelayState</code> value
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getRelayState(String requestID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the <code>RelayState</code> value with the specified
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * request ID in the <code>relayStateMap</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param relayState the <code>RelayState</code> value
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setRelayState(String requestID, String relayState) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Removes the mapping for this request ID from the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>relayStateMap</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void removeRelayState(String requestID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns authentication request associated with <code>requestID</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID authentication request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return authentication request associated with the request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAuthnRequest getAuthnRequest (String requestID){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.getAuthnRequest: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return (FSAuthnRequest)idAuthnRequestMap.get (requestID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets authentication request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID authentication request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authnRequest authentication request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setAuthnRequest (String requestID, FSAuthnRequest authnRequest){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSSessionManager.setAuthnRequest: Called, ID=" + requestID );
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idAuthnRequestMap.put (requestID, authnRequest);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Removes an authentication request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID ID of the request to be removed
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void removeAuthnRequest (String requestID){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSSessionManager.removeAuthnRequest: Called, ID=" + requestID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns local token associated with the request ID.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return session object associated with the request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Object getLocalSessionToken(String requestID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.getLocalSessionToken: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets local token.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param localSession token to be set
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setLocalSessionToken (String requestID, Object localSession){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.setLocalSessionToken: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idLocalSessionTokenMap.put (requestID, localSession);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idffSvc.setIdLocalSessToken((long)idLocalSessionTokenMap.size());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Removes a local token associated with <code>requestID</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void removeLocalSessionToken (String requestID){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSSessionManager.removeLocalSessionToken: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idffSvc.setIdLocalSessToken((long)idLocalSessionTokenMap.size());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns IDP's entity ID associated with <code>requestID</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return identity provider's entity ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getIDPEntityID(String requestID){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSSessionManager.getIDPEntityID: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets IDP's entity ID.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID authentication request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param idpEntityId identity provider's entity ID to be set
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.setIDPEntityID");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets proxy service provider descriptor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID authentication request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param spDescriptor provider descriptor to be set
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns proxy service provider descriptor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return provider descriptor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public SPDescriptorType getProxySPDescriptor(String requestID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return (SPDescriptorType)proxySPDescMap.get(requestID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns proxy authentication request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID authentication request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAuthnRequest getProxySPAuthnRequest(String requestID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return (FSAuthnRequest)proxySPAuthnReqMap.get(requestID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets proxy authentication request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestID request ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authnRequest proxy authentication request to be set.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster proxySPAuthnReqMap.put(requestID, authnRequest);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns list of sessions associated with <code>userID</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userID user ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return list of sessions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.getSessionList: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return (List)userIDSessionListMap.get(userID.toLowerCase());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets session list.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userID user ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param sessionList list of sessions to be set
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setSessionList (String userID, List sessionList){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.setSessionList: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster userIDSessionListMap.put(userID.toLowerCase(), sessionList);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idffSvc.setUserIDSessionList((long)userIDSessionListMap.size());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Removes session list associated with <code>userID</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userID user ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.removeSessionList: Called ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster userIDSessionListMap.remove(userID.toLowerCase());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idffSvc.setUserIDSessionList((long)userIDSessionListMap.size());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns session with <code>sessionID</code> for <code>userID</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userID user ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param sessionID session ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSSession</code> object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSSession getSession(String userID, String sessionID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.getSession: Called ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (sessions) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while (i.hasNext ()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the session in <code>sessions</code> whose session index is
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>sessionIndex</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param sessions list of <code>FSSession</code>s.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param sessionIndex session index
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSSession</code> object whose session index is
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>sessionIndex</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSSession getSession(List sessions, String sessionIndex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSSessionManager.getSession(sessionIndex):");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (sessions == null || sessionIndex == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSSessionManager.getSession(sessionIndex):" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "sessions or sessionIndex is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (sessions) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while (i.hasNext ()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (tmpIndex != null && tmpIndex.equals(sessionIndex)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSSessionManager.getSession(sessionIndex):" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "No session found for the given session index.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns session associated with <code>token</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param token session object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSSession</code> associated with the token
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.getSession: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SessionProvider sessionProvider = SessionManager.getProvider();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String univId = sessionProvider.getPrincipalName(token);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String sessionID = sessionProvider.getSessionID(token);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSSessionManager.getSession(token) : ", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Removes <code>entityID</code> from <code>userID</code>'s
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * session partner list.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userID user ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param entityID entity ID of the provider to be removed
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param localSession <code>FSSession</code> object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String userID, String entityID, FSSession localSession)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.removeProvider: Called ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSSessionManager.removeProvider: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "localSession is not null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (sessions) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while (i.hasNext ()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Removes a federation session of an user.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userID user ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param session federation session to be removed
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void removeSession (String userID, FSSession session){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.removeSession: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (sessions) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while (i.hasNext ()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Adds a federation session to a user.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userID user ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param session federation session to be added
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void addSession (String userID, FSSession session){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.addSession: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (sessions) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while (i.hasNext ()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager(): created " + metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster realm = IDFFMetaUtils.getRealmByMetaAlias(metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager = FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostEntityId = metaManager.getEntityIDByMetaAlias(metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.warning("FSSessionManager constructor: couldnot "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dnStats = new FSSessionMapStats(userIDSessionListMap,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster reqStats = new FSSessionMapStats(idAuthnRequestMap,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster tokenStats = new FSSessionMapStats(idLocalSessionTokenMap,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "idLocalSessionTokenMap", realm, hostEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayStats = new FSSessionMapStats(relayStateMap,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSSessionManager.getInstance: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cRunnable = new FSRequestCleanUpRunnable(idAuthnRequestMap,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SystemTimerPool.getTimerPool().schedule(cRunnable, new Date(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ((System.currentTimeMillis() + cleanupInterval) / 1000) *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the singleton instance of <code>FSSessionManager</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param metaAlias hosted provider's metaAlias
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return The singleton <code>FSSessionManager</code> instance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * for this provider
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static synchronized FSSessionManager getInstance (String metaAlias){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // not throwing any exception
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.getInstance: Called "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSSessionManager.getInstance: null provider meta alias");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message ("FSSessionManager.getInstance: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "new instance of FSSessionManager: " + metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (instanceMap) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}// end class