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: FSServiceManager.java,v 1.5 2008/06/25 05:46:56 qcheng Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.accountmgmt.FSAccountFedInfo;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.accountmgmt.FSAccountFedInfoKey;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.accountmgmt.FSAccountManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.FSUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.IFSConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.jaxb.entityconfig.BaseConfigType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.FSAuthnRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.FSAuthnResponse;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.FSFederationTerminationNotification;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.FSNameRegistrationRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.FSRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.meta.IDFFMetaException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.meta.IDFFMetaManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.meta.IDFFMetaUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.fednsso.FSAssertionArtifactHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.fednsso.FSBrowserArtifactConsumerHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.fednsso.FSBrowserPostConsumerHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.fednsso.FSLECPConsumerHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.fednsso.FSSSOAndFedHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.fednsso.FSSSOBrowserArtifactProfileHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.fednsso.FSSSOBrowserPostProfileHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.fednsso.FSSSOLECPProfileHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.fednsso.FSSSOWMLPostProfileHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.fednsso.FSWMLPostConsumerHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.logout.FSPreLogoutHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.registration.FSNameRegistrationHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.termination.FSFedTerminationHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.util.FSServiceUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.meta.jaxb.ProviderDescriptorType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.meta.jaxb.SPDescriptorType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.meta.jaxb.IDPDescriptorType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.NameIdentifier;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Services use this class to obtain appropriate handlers for different
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static FSServiceManager instance = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Private constructor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager(): Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns handler at <code>SP</code> side which will handle fed/sso
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request http request object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param response http response object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authnRequest authentication request object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authnResponse authentication response object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param idpDescriptor identity provider descriptor who issued the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * authentication response
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param idpEntityId identity provider's entity ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSAssertionArtifactHandler</code> object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAssertionArtifactHandler getAssertionArtifactHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getAssertionArtifactHandler: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getAssertionArtifactHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + FSUtils.bundle.getString("nullInputParameter"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAssertionArtifactHandler returnHandler = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String profile = authnRequest.getProtocolProfile();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean doFederate = authnRequest.getFederate();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String relayState = authnResponse.getRelayState();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (profile.equals(IFSConstants.SSO_PROF_BROWSER_POST)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSBrowserPostConsumerHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (profile.equals(IFSConstants.SSO_PROF_WML_POST)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (profile.equals(IFSConstants.SSO_PROF_LECP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getAssertionArtifactHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Unknown Protocol profile request");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getAssertionArtifactHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "No protocol profile in the Request");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Obtains handler at <code>SP</code> side that will handle browser
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * artifact profile.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request http request object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param response http response object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param realm The realm under which the entity resides.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param idpSuccinctId identity provider's succinct ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param samlRequest <code>SAML</code> request object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param relayState where to go after the process is done
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSAssertionArtifactHandler</code> object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAssertionArtifactHandler getBrowserArtifactHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getBrowserArtifactHandler: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getBrowserArtifactHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + FSUtils.bundle.getString("nullInputParameter"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String idpEntityId = metaManager.getEntityIDBySuccinctID(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getIDPDescriptor(realm, idpEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getBrowserArtifactHandler:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " IDP Id of the provider to communicate: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getBrowserArtifactHandler:Exception Occured:",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns handler at <code>IDP</code> side that handles single sign on and
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * federation requests.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request http request object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param response http response object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authnRequest authentication request sent by service provider
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param realm The realm under which the entity resides.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSSSOAndFedHandler</code> object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager.getSSOAndFedHandler: Called ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((request == null) ||(response == null) ||(authnRequest == null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getSSOAndFedHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + FSUtils.bundle.getString("nullInputParameter"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String profile = authnRequest.getProtocolProfile();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager = FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String spEntityId = authnRequest.getProviderId();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getSPDescriptor(realm, spEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getSPDescriptorConfig(realm, spEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String relayState = authnRequest.getRelayState();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getSSOAndFedHandler: requested profile:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (profile.equals(IFSConstants.SSO_PROF_BROWSER_ART)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSSSOBrowserArtifactProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (profile.equals(IFSConstants.SSO_PROF_BROWSER_POST)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSSSOBrowserPostProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(profile.equals(IFSConstants.SSO_PROF_WML_POST)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSSSOWMLPostProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(profile.equals(IFSConstants.SSO_PROF_LECP)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getSSOAndFedHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Unknown Protocol profile request");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSSSOBrowserArtifactProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getSSOAndFedHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "No protocol profile in the Request");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSSSOBrowserArtifactProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getSSOAndFedHandler: ", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns handler for <code>IDP</code> to handle browser artifact profile.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request http request object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param response http response object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param samlRequest <code>SAML</code> request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSSSOAndFedHandler</code> object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSSSOAndFedHandler getBrowserArtifactSSOAndFedHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " getBrowserArtifactSSOAndFedHandler: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((request == null) ||(response == null) ||(samlRequest == null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getSSOAndFedHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + FSUtils.bundle.getString("nullInputParameter"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns handler at <code>IDP</code> that handles <code>LECP</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request http request object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param response http response object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authnRequest authentication request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param realm The realm under which the entity resides.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSSSOLECPProfileHandler</code> object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSSSOLECPProfileHandler getLECPProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager.getLECPProfileHandler:Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getLECPProfileHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + FSUtils.bundle.getString("nullInputParameter"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager = FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String spEntityId = authnRequest.getProviderId();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getSPDescriptor(realm, spEntityId),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getSPDescriptorConfig(realm, spEntityId),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getLECPProfileHandler: ", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns name registration handler. This method is invoked by the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>SP</code> at the end of account federation if name registration is
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * turned on.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The <code>remoteEntityId</code> passed is that of the <code>IdP</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with whom registration will be done.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param realm the realm in which the provider resides
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param remoteEntityId remote Provider Entity ID.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param remoteProviderRole remote Provider Role.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSNameRegistrationHandler</code> the name registration
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSNameRegistrationHandler getNameRegistrationHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSNameRegistrationHandler handlerRegistration =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSNameRegistrationHandler::" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "getSPNameIdentifier failed to get meta " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Manager instance");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (remoteProviderRole.equalsIgnoreCase(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (remoteProviderRole.equalsIgnoreCase(IFSConstants.SP))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setRemoteDescriptor(remoteDesc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setRemoteEntityId(remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSNameRegistrationHandler::Failed " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "to get remote descriptor:", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns <code>FSFedTerminationHandler</code>. This method is invoked at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the end where the termination request is received. The handler is
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * responsible for doing account defederation.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param terminationRequest federation termination request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostedConfig Hosted Provider's extended meta
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostedEntityId hosted provider's entity ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostedProviderRole hosted provider's role
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param metaAlias hosted provider's meta alias
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param remoteEntityId remote provider's entity ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSFedTerminationHandler</code> object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSFedTerminationHandler getFedTerminationHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSFederationTerminationNotification terminationRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Entered FSServicemanager::getFedTerminationHandler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountManager managerInst = FSAccountManager.getInstance(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Error in retrieving account manager");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster NameIdentifier nameIdObj = terminationRequest.getNameIdentifier();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Remote provider : " + remoteEntityId
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ", Name Qualifier : " + nameIdObj.getNameQualifier()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ", Name : " + nameIDValue + ", Realm : " + realm);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String nameQualifier = nameIdObj.getNameQualifier();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // for SP, search local, then remote IDP,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // for IDP, search remote SP, then local
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (hostedProviderRole.equalsIgnoreCase(IFSConstants.SP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster acctkey = new FSAccountFedInfoKey(remoteEntityId, nameIDValue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster env.put(IFSConstants.FS_USER_PROVIDER_ENV_TERMINATION_KEY,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String userID = managerInst.getUserID(acctkey, realm, env);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (hostedProviderRole.equalsIgnoreCase(IFSConstants.SP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster userID = managerInst.getUserID(acctkey, realm, env);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountFedInfo acctInfo = managerInst.readAccountFedInfo(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Account federation with provider " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Pass USERID TO HANDLER to AVOID SEARCH AGAIN
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Termination Handler is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager::getFedTerminationHandler " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "failed to get termination handler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns <code>FSPreLogouHandler</code>. This method is invoked when a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * logout request is to be processed.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return FSPreLogoutHandler PreLogout handler
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSPreLogoutHandler getPreLogoutHandler() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Entered FSServicemanager::getPreLogoutHandler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("PreLogoutHandler is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager::getSingleLogoutHandler " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "failed to get logout handler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns federation termination handler. This method is invoked at the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * end where the termination is initiated. The handler is responsible
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * for doing account defederation locally and then invoking termination at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * remote provider end.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param remoteEntityId provider with whom termination needs to be done
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param remoteProviderRole role of remote provider
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userID user who is terminating federation with remote provider
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param realm the realm under which the entity resides
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostedEntityId hosted provider's entity id
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param metaAlias hosted provider's meta alias
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSFedTerminationHandler</code> object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSFedTerminationHandler getFedTerminationHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Entered FSServicemanager::" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " getFedTerminationHandler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSFedTerminationHandler handlerTermination = null; // check for null
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountManager managerInst = FSAccountManager.getInstance(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (metaManager == null || managerInst == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Error in retrieving meta, account manager");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster managerInst.readAccountFedInfo(userID, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Account federation with provider " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Pass USERDN TO HANDLER to AVOID SEARCH AGAIN
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager.getFedTermination" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Handler: remoteEntityID = " + remoteEntityId +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " remoteProviderRole = " + remoteProviderRole);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerTermination = new FSFedTerminationHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (remoteProviderRole.equalsIgnoreCase(IFSConstants.IDP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerTermination.setRemoteDescriptor(remoteDesc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerTermination.setRemoteEntityId(remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Termination Handler is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager::getFedTerminationHandler " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "failed to get termination handler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns <code>FSNameRegistrationHandler</code> instance. This method is
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * invoked at the end where the registration is initiated. The handler
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is responsible for doing name registration at remote provider end and
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * then locally.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param remoteEntityId provider with whom registration is to be done
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param remoteProviderRole role of the remote provider
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userID user for whom registration will be done with remote
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostEntityId hosted provider's entity ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param metaAlias hosted provider's meta alias
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return Name registration handler
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSNameRegistrationHandler getNameRegistrationHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Entered FSServiceManager::getNameRegistrationHandler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager = FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (metaManager == null || managerInst == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Error in retrieving meta, account manager");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster managerInst.readAccountFedInfo(userID, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Account federation with provider " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String realm = IDFFMetaUtils.getRealmByMetaAlias(metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Pass USERID TO HANDLER to AVOID SEARCH AGAIN
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSNameRegistrationHandler handlerRegistration =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (remoteProviderRole.equalsIgnoreCase(IFSConstants.SP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteConfig = metaManager.getSPDescriptorConfig(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteConfig = metaManager.getIDPDescriptorConfig(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setRemoteEntityId(remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setRemoteDescriptor(remoteDesc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Registration Handler is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager::getNameRegistrationHandler "+
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "failed to get registration handler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns <code>FSServiceManager</code> instance.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSServiceManager</code> instance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager.getInstance: Called ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized(FSServiceManager.class) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager.getInstance: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " Creating a new instance of ServiceManager");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}// end class