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: FSRegistrationInitiationServlet.java,v 1.7 2008/12/19 06:50:47 exu Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.federation.services.registration;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.io.IOException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.servlet.ServletConfig;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.servlet.ServletException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.servlet.http.HttpServletRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.servlet.http.HttpServletResponse;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.servlet.http.HttpServlet;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.accountmgmt.FSAccountFedInfo;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.IFSConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.FSUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.jaxb.entityconfig.BaseConfigType;
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.util.FSServiceUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.FSServiceManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.FSSession;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.FSSessionManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.meta.jaxb.ProviderDescriptorType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.session.SessionException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.session.SessionManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.session.SessionProvider;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.logging.Level;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Initiates registration request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class FSRegistrationInitiationServlet extends HttpServlet {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static String REGISTRATION_DONE_URL = "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static String COMMON_ERROR_PAGE = "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private IDFFMetaManager metaManager = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected String locale = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private HttpServletRequest request = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Initializes the servlet.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param config the <code>ServletConfig</code> object that contains
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * configutation information for this servlet.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception ServletException if an exception occurs that interrupts
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the servlet's normal operation.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void init(ServletConfig config)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws ServletException
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster super.init(config);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Entered FSRegistrationInitiationServlet Init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager = FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Invoked to set some commonly used registration URLs based on hosted
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostedConfig hosted provider's extended meta
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param metaAlias hosted provider's meta alias
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected void setRegistrationURL (BaseConfigType hostedConfig,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String metaAlias)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster REGISTRATION_DONE_URL = FSServiceUtils.getRegistrationDonePageURL(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request, hostedConfig, metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster COMMON_ERROR_PAGE = FSServiceUtils.getErrorPageURL(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request, hostedConfig, metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "REGISTRATION_DONE_URL : " + REGISTRATION_DONE_URL +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "\nCOMMON_ERROR_PAGE : " + COMMON_ERROR_PAGE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Handles the HTTP GET request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request <code>HttpServletRequest</code> object that contains the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * request the client has made of the servlet.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param response <code>HttpServletResponse</code> object that contains
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the response the servlet sends to the client.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception ServletException if an input or output error is detected when
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the servlet handles the GET request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception IOException if the request for the GET could not be handled
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void doGet(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse response)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws ServletException, IOException
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doGetPost(request, response);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Handles the HTTP POST request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request <code>HttpServletRequest</code> object that contains the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * request the client has made of the servlet.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param response <code>HttpServletResponse</code> object that contains
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the response the servlet sends to the client.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception ServletException if an input or output error is detected when
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the servlet handles the POST request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception IOException if the request for the POST could not be handled
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void doPost(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse response)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws ServletException, IOException
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doGetPost(request, response);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Invoked when the user clicks on the registration link in the application.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request <code>HttpServletRequest</code> object that contains the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * request the client has made of the servlet.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param response <code>HttpServletResponse</code> object that contains
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the response the servlet sends to the client.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception ServletException, IOException if the request could not be
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * handled
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void doGetPost(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse response)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws ServletException, IOException
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Alias processing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerAlias = request.getParameter(IFSConstants.META_ALIAS);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (providerAlias == null || providerAlias.length() < 1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("Unable to retrieve alias, Hosted Provider. "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Cannot process request");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response.sendError(response.SC_INTERNAL_SERVER_ERROR,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.bundle.getString("aliasNotFound"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (metaManager == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("Cannot retrieve hosted descriptor. " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Cannot process request");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response.sendError(response.SC_INTERNAL_SERVER_ERROR,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.FAILED_HOSTED_DESCRIPTOR));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ProviderDescriptorType hostedProviderDesc = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BaseConfigType hostedConfig = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostedRole = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostedEntityId = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String realm = IDFFMetaUtils.getRealmByMetaAlias(providerAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedRole = metaManager.getProviderRoleByMetaAlias(providerAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedEntityId = metaManager.getEntityIDByMetaAlias(providerAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (hostedRole != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedRole.equalsIgnoreCase(IFSConstants.SP))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedProviderDesc =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getSPDescriptor(realm, hostedEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedConfig =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getSPDescriptorConfig(realm, hostedEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (hostedRole != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedRole.equalsIgnoreCase(IFSConstants.IDP))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedProviderDesc =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getIDPDescriptor(realm, hostedEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedConfig =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster metaManager.getIDPDescriptorConfig(realm, hostedEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (hostedProviderDesc == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDFFMetaException((String) null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (IDFFMetaException eam) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Unable to find Hosted Provider. not process request", eam);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response.sendError(response.SC_INTERNAL_SERVER_ERROR,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.FAILED_HOSTED_DESCRIPTOR));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean isIDP = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (hostedRole != null && hostedRole.equalsIgnoreCase(IFSConstants.IDP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster isIDP = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.needSetLBCookieAndRedirect(request, response, isIDP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.request = request;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setRegistrationURL(hostedConfig, providerAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doRegistrationInitiation(request, response, hostedProviderDesc,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedConfig, hostedEntityId, hostedRole, providerAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Retrieves the session from HTTPRequest object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request HTTP request object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return valid session from the request object;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>null</code> otherwise.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private Object getValidToken(HttpServletRequest request) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Entered FSRegistrationInitiationServlet::getValidToken");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SessionProvider sessionProvider = SessionManager.getProvider();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Object ssoToken = sessionProvider.getSession(request);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((ssoToken == null) || (!sessionProvider.isValid(ssoToken))) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Session is not valid redirecting for authentication");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return ssoToken;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (SessionException e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("SessionException caught: ", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Called when a registration needs to be initiated with a remote provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request <code>HTTPServletRequest</code> object received via a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * HTTP Redirect
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param response <code>HTTPServletResponse</code> object to send the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * response back to user agent
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostedProviderDesc the provider where registration is initiated
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostedConfig the hosted provider's extended meta
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostedEntityId the hosted provider's entity id
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostedRole hosted provider's role
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostedProviderAlias hosted provider's meta alias
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void doRegistrationInitiation(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ProviderDescriptorType hostedProviderDesc,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BaseConfigType hostedConfig,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostedEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostedRole,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostedProviderAlias)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Entered FSRegistrationInitiationServlet::doRegistrationInitiation");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Object ssoToken = getValidToken(request);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (ssoToken != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerId =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request.getParameter(IFSConstants.REGISTRATION_PROVIDER_ID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (providerId == null || providerId.length() < 1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Provider Id not found, display error page");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSServiceUtils.showErrorPage(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster COMMON_ERROR_PAGE,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.REGISTRATION_NO_PROVIDER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.CONTACT_ADMIN);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // session is valid, ProviderId available
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSServiceManager instSManager = FSServiceManager.getInstance();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (instSManager != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager Instance not null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String remoteProviderRole = IFSConstants.SP;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAccountFedInfo fedinfo = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (hostedRole.equalsIgnoreCase(IFSConstants.SP)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteProviderRole = IFSConstants.IDP;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSSessionManager sessManager =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSSessionManager.getInstance(hostedProviderAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSSession ssoSession = sessManager.getSession(ssoToken);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (ssoSession != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!ssoSession.getOneTime()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster fedinfo = ssoSession.getAccountFedInfo();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SessionProvider sessionProvider =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SessionManager.getProvider();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSNameRegistrationHandler handlerObj =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster instSManager.getNameRegistrationHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster providerId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster remoteProviderRole,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sessionProvider.getPrincipalName(ssoToken),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedEntityId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostedProviderAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (handlerObj != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerObj.setHostedDescriptor(hostedProviderDesc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerObj.setHostedDescriptorConfig(hostedConfig);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerObj.setMetaAlias(hostedProviderAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerObj.setHostedProviderRole(hostedRole);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerObj.setHostedEntityId(hostedEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (fedinfo != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerObj.setAccountInfo(fedinfo);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean bStatus =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster handlerObj.handleNameRegistration(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request, response, ssoToken);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "handleNameRegistration status is : " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bStatus);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("Unable to get registration "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "handler. User account Not valid");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }else{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSServiceManager Instance null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSServiceUtils.returnLocallyAfterOperation(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response, REGISTRATION_DONE_URL, false,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.REGISTRATION_SUCCESS,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.REGISTRATION_FAILURE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSServiceUtils.redirectForAuthentication(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request, response, hostedProviderAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(IOException e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "IOException in doRegistrationInitiation:",e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(SessionException ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "SessionException in doRegistrationInitiation", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSServiceUtils.returnLocallyAfterOperation(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster REGISTRATION_DONE_URL,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster false,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.REGISTRATION_SUCCESS,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.REGISTRATION_FAILURE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster} // FSRegistrationInitiationServlet