a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 *
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 * opensso/legal/CDDLv1.0.txt
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * at opensso/legal/CDDLv1.0.txt.
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 *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: FSServiceManager.java,v 1.5 2008/06/25 05:46:56 qcheng Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.federation.services;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
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 Fosterimport com.sun.identity.saml.common.SAMLUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.protocol.Request;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.HashMap;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Map;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.servlet.http.HttpServletRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.servlet.http.HttpServletResponse;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Services use this class to obtain appropriate handlers for different
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * profiles.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class FSServiceManager {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static FSServiceManager instance = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Private constructor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private FSServiceManager() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager(): Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns handler at <code>SP</code> side which will handle fed/sso
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * profile.
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAssertionArtifactHandler getAssertionArtifactHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAuthnRequest authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAuthnResponse authnResponse,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPDescriptorType idpDescriptor,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String idpEntityId
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getAssertionArtifactHandler: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((request == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (response == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (authnRequest == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (authnResponse == null))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getAssertionArtifactHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + FSUtils.bundle.getString("nullInputParameter"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
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 != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (profile.equals(IFSConstants.SSO_PROF_BROWSER_POST)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSBrowserPostConsumerHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idpDescriptor,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idpEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doFederate,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (profile.equals(IFSConstants.SSO_PROF_WML_POST)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSWMLPostConsumerHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idpDescriptor,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idpEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doFederate,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (profile.equals(IFSConstants.SSO_PROF_LECP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSLECPConsumerHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idpDescriptor,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idpEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doFederate,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getAssertionArtifactHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Unknown Protocol profile request");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getAssertionArtifactHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "No protocol profile in the Request");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return returnHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAssertionArtifactHandler getBrowserArtifactHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String realm,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String idpSuccinctId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSRequest samlRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String relayState
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getBrowserArtifactHandler: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((request == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (response == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (idpSuccinctId == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (samlRequest == null))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getBrowserArtifactHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + FSUtils.bundle.getString("nullInputParameter"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String idpEntityId = metaManager.getEntityIDBySuccinctID(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster realm, idpSuccinctId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPDescriptorType idpDescriptor =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getIDPDescriptor(realm, idpEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getBrowserArtifactHandler:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " IDP Id of the provider to communicate: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idpEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return new FSBrowserArtifactConsumerHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request, response, idpDescriptor, idpEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState, samlRequest);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(Exception ex){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getBrowserArtifactHandler:Exception Occured:",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSSSOAndFedHandler getSSOAndFedHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAuthnRequest authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String realm
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) {
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 return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSSSOAndFedHandler returnHandler = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String profile = authnRequest.getProtocolProfile();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager = FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String spEntityId = authnRequest.getProviderId();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SPDescriptorType spDescriptor =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getSPDescriptor(realm, spEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BaseConfigType spConfig =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getSPDescriptorConfig(realm, spEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String relayState = authnRequest.getRelayState();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getSSOAndFedHandler: requested profile:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + profile);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (profile != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (profile.equals(IFSConstants.SSO_PROF_BROWSER_ART)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSSSOBrowserArtifactProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spDescriptor,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spConfig,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (profile.equals(IFSConstants.SSO_PROF_BROWSER_POST)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSSSOBrowserPostProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spDescriptor,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spConfig,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(profile.equals(IFSConstants.SSO_PROF_WML_POST)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSSSOWMLPostProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spDescriptor,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spConfig,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(profile.equals(IFSConstants.SSO_PROF_LECP)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSSSOLECPProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spDescriptor,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spConfig,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getSSOAndFedHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Unknown Protocol profile request");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSSSOBrowserArtifactProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spDescriptor,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spConfig,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSServiceManager.getSSOAndFedHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "No protocol profile in the Request");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnHandler = new FSSSOBrowserArtifactProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spDescriptor,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spConfig,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return returnHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(IDFFMetaException ex){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getSSOAndFedHandler: ", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSSSOAndFedHandler getBrowserArtifactSSOAndFedHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Request samlRequest
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager::" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " getBrowserArtifactSSOAndFedHandler: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((request == null) ||(response == null) ||(samlRequest == null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getSSOAndFedHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + FSUtils.bundle.getString("nullInputParameter"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return new FSSSOBrowserArtifactProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request, response, samlRequest);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns handler at <code>IDP</code> that handles <code>LECP</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * profile.
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSSSOLECPProfileHandler getLECPProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAuthnRequest authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String realm
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager.getLECPProfileHandler:Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((request == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (response == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (authnRequest == null))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getLECPProfileHandler: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + FSUtils.bundle.getString("nullInputParameter"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager = FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String spEntityId = authnRequest.getProviderId();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return new FSSSOLECPProfileHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getSPDescriptor(realm, spEntityId),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getSPDescriptorConfig(realm, spEntityId),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster spEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnRequest.getRelayState());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(IDFFMetaException ex){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager.getLECPProfileHandler: ", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /*
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 * handler
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSNameRegistrationHandler getNameRegistrationHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String realm,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String remoteEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String remoteProviderRole)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSNameRegistrationHandler handlerRegistration =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new FSNameRegistrationHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (handlerRegistration != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (metaManager == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSNameRegistrationHandler::" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "getSPNameIdentifier failed to get meta " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Manager instance");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ProviderDescriptorType remoteDesc = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (remoteProviderRole == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (remoteProviderRole.equalsIgnoreCase(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.IDP))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteDesc = metaManager.getIDPDescriptor(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster realm, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (remoteProviderRole.equalsIgnoreCase(IFSConstants.SP))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteDesc = metaManager.getSPDescriptor(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster realm, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (remoteDesc != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setRemoteDescriptor(remoteDesc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setRemoteEntityId(remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setRealm(realm);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return handlerRegistration;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(IDFFMetaException e){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSNameRegistrationHandler::Failed " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "to get remote descriptor:", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return handlerRegistration;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /*
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSFedTerminationHandler getFedTerminationHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSFederationTerminationNotification terminationRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BaseConfigType hostedConfig,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String realm,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostedEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostedProviderRole,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String metaAlias,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String remoteEntityId
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Entered FSServicemanager::getFedTerminationHandler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountManager managerInst = FSAccountManager.getInstance(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (managerInst == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Error in retrieving account manager");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster NameIdentifier nameIdObj = terminationRequest.getNameIdentifier();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String nameIDValue = nameIdObj.getName();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Get amId
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Remote provider : " + remoteEntityId
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ", Name Qualifier : " + nameIdObj.getNameQualifier()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ", Name : " + nameIDValue + ", Realm : " + realm);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String nameQualifier = nameIdObj.getNameQualifier();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String searchDomain = hostedEntityId;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (nameQualifier != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster !nameQualifier.equals(remoteEntityId))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster searchDomain = nameQualifier;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountFedInfoKey acctkey = null;
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(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster searchDomain, nameIDValue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster acctkey = new FSAccountFedInfoKey(remoteEntityId, nameIDValue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Map env = new HashMap();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster env.put(IFSConstants.FS_USER_PROVIDER_ENV_TERMINATION_KEY,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster terminationRequest);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String userID = managerInst.getUserID(acctkey, realm, env);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (userID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (hostedProviderRole.equalsIgnoreCase(IFSConstants.SP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster acctkey = new FSAccountFedInfoKey(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteEntityId, nameIDValue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster acctkey = new FSAccountFedInfoKey(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedEntityId, nameIDValue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster userID = managerInst.getUserID(acctkey, realm, env);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (userID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("UserID is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("user ID is "+ userID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountFedInfo acctInfo = managerInst.readAccountFedInfo(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster userID, remoteEntityId, nameIDValue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (acctInfo == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Account federation with provider " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteEntityId + " does not exist");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Pass USERID TO HANDLER to AVOID SEARCH AGAIN
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSFedTerminationHandler handlerTermination =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new FSFedTerminationHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (handlerTermination != null){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerTermination.setUserID(userID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerTermination.setAccountInfo(acctInfo);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return handlerTermination;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Termination Handler is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(Exception e){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager::getFedTerminationHandler " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "failed to get termination handler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /*
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSPreLogoutHandler getPreLogoutHandler() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Entered FSServicemanager::getPreLogoutHandler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSPreLogoutHandler handlerLogout = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerLogout = new FSPreLogoutHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (handlerLogout != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return handlerLogout;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("PreLogoutHandler is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }catch (Exception e){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager::getSingleLogoutHandler " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "failed to get logout handler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /*
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSFedTerminationHandler getFedTerminationHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String remoteEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String remoteProviderRole,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String userID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String realm,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String metaAlias
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Entered FSServicemanager::" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " getFedTerminationHandler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSFedTerminationHandler handlerTermination = null; // check for null
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountManager managerInst = FSAccountManager.getInstance(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (metaManager == null || managerInst == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Error in retrieving meta, account manager");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountFedInfo acctInfo =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster managerInst.readAccountFedInfo(userID, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (acctInfo == null){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Account federation with provider " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteEntityId + " does not exist");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Pass USERDN TO HANDLER to AVOID SEARCH AGAIN
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager.getFedTermination" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Handler: remoteEntityID = " + remoteEntityId +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " remoteProviderRole = " + remoteProviderRole);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerTermination = new FSFedTerminationHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(handlerTermination != null){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ProviderDescriptorType remoteDesc = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (remoteProviderRole.equalsIgnoreCase(IFSConstants.IDP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteDesc = metaManager.getIDPDescriptor(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster realm, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteDesc = metaManager.getSPDescriptor(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster realm, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerTermination.setRemoteDescriptor(remoteDesc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerTermination.setRemoteEntityId(remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerTermination.setUserID(userID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerTermination.setAccountInfo(acctInfo);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return handlerTermination;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Termination Handler is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(Exception e){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager::getFedTerminationHandler " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "failed to get termination handler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /*
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 * provider
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSNameRegistrationHandler getNameRegistrationHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String remoteEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String remoteProviderRole,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String userID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String metaAlias
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Entered FSServiceManager::getNameRegistrationHandler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager = FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountManager managerInst =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountManager.getInstance(metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (metaManager == null || managerInst == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Error in retrieving meta, account manager");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountFedInfo acctInfo =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster managerInst.readAccountFedInfo(userID, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (acctInfo == null){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Account federation with provider " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteEntityId + " does not exist");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String realm = IDFFMetaUtils.getRealmByMetaAlias(metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Pass USERID TO HANDLER to AVOID SEARCH AGAIN
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSNameRegistrationHandler handlerRegistration =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new FSNameRegistrationHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (handlerRegistration != null){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ProviderDescriptorType remoteDesc = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BaseConfigType remoteConfig = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (remoteProviderRole.equalsIgnoreCase(IFSConstants.SP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteDesc = metaManager.getSPDescriptor(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster realm, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteConfig = metaManager.getSPDescriptorConfig(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster realm, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteDesc = metaManager.getIDPDescriptor(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster realm, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteConfig = metaManager.getIDPDescriptorConfig(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster realm, remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setRealm(realm);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setRemoteEntityId(remoteEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setRemoteDescriptor(remoteDesc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setUserID(userID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerRegistration.setAccountInfo(acctInfo);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return handlerRegistration;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Registration Handler is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(Exception e){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSServiceManager::getNameRegistrationHandler "+
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "failed to get registration handler");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns <code>FSServiceManager</code> instance.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSServiceManager</code> instance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static FSServiceManager getInstance() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager.getInstance: Called ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (instance == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized(FSServiceManager.class) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager.getInstance: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " Creating a new instance of ServiceManager");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster instance = new FSServiceManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return instance;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}// end class