4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<!--
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster The contents of this file are subject to the terms
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster of the Common Development and Distribution License
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster (the License). You may not use this file except in
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster compliance with the License.
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster You can obtain a copy of the License at
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster https://opensso.dev.java.net/public/CDDLv1.0.html or
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster opensso/legal/CDDLv1.0.txt
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster See the License for the specific language governing
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster permission and limitations under the License.
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster When distributing Covered Code, include this CDDL
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster Header Notice in each file and include the License file
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster at opensso/legal/CDDLv1.0.txt.
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster If applicable, add the following below the CDDL Header,
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster with the fields enclosed by brackets [] replaced by
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster your own identifying information:
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster "Portions Copyrighted [year] [name of copyright owner]"
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster $Id: init.jspf,v 1.5 2009/08/01 00:21:52 sean_brydon Exp $
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster-->
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%-- imports --%>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%@ page import="com.sun.identity.common.SystemConfigurationUtil" %>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%@ page import="com.sun.identity.saml2.common.AccountUtils" %>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%@ page import="com.sun.identity.saml2.common.SAML2Constants" %>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%@ page import="com.sun.identity.saml2.common.SAML2Utils" %>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%@ page import="com.sun.identity.saml2.meta.SAML2MetaManager" %>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%@ page import="com.sun.identity.saml2.jaxb.metadata.SPSSODescriptorElement" %>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%@ page import="com.sun.identity.saml2.jaxb.metadata.IDPSSODescriptorElement" %>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%@ page import="com.sun.identity.saml2.jaxb.metadata.AssertionConsumerServiceElement" %>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%@ page import="com.sun.identity.saml2.jaxb.metadata.SingleLogoutServiceElement" %>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%@ page import="java.util.*, java.net.URLEncoder" %>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%@ page import="com.iplanet.sso.SSOTokenManager,
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster com.iplanet.sso.SSOException,
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster com.iplanet.sso.SSOToken"
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster%>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%-- functions --%>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%!
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster private static final String UNIVERSAL_IDENTIFIER =
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster "sun.am.UniversalIdentifier";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String quote(String s) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster return (s != null) ? "\"" + s + "\"" : null;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster%>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster<%
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String deployuri = SystemConfigurationUtil.getProperty(
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster "com.iplanet.am.services.deploymentDescriptor");
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if ((deployuri == null) || (deployuri.length() == 0)) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster deployuri = "../../..";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String utf8 = "UTF-8";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String REALM = "/";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String SAMPLES_DIR = "samples/saml2/useCaseDemo";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster // Change the value if you want to show a different title in your install
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String idpTitle = "GreatAir";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster // Change the value if you want to show a different title in your install
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String spTitle = "BestCars";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String partnerSampleHomeUrl = null;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String reserveCarWithPartnerUrl = null;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster boolean iAmIdp = false;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster boolean iAmSp = false;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String myMetaAlias = null;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String myEntityID = null;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String partnerEntityID = null;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String myTitle = null;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String partnerTitle = null;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String thisUrl = request.getRequestURL().toString();
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String appBase = thisUrl.substring(0, thisUrl.lastIndexOf("/samples") + 1);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String localLoginUrl = appBase + "UI/Login";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String localLogoutUrl = appBase + "UI/Logout";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String saml2Base = appBase + "saml2/";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String jspBase = saml2Base + "useCaseDemo/";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String samplesBase = appBase + SAMPLES_DIR + "/";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String reserveFlightUrl = samplesBase + "reserveFlight.jsp";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String reserveCarUrl = samplesBase + "reserveCar.jsp";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster SSOToken ssoToken = null;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster boolean userLoggedIn = false;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String userName = "";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String userLabel = "";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster boolean federatedWithPartner = false;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster //To determine if user is logged in thru SAML or Local login
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster boolean isLocalLogin = true;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster SAML2MetaManager mm = SAML2Utils.getSAML2MetaManager();
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster List idpMetaAliases = mm.getAllHostedIdentityProviderMetaAliases(REALM);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster List spMetaAliases = mm.getAllHostedServiceProviderMetaAliases(REALM);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster List idpEntities = mm.getAllRemoteIdentityProviderEntities(REALM);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster List spEntities = mm.getAllRemoteServiceProviderEntities(REALM);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if (!idpMetaAliases.isEmpty()) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster iAmIdp = true;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster myTitle = idpTitle;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster partnerTitle = spTitle;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster myMetaAlias = (String)idpMetaAliases.get(0);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster myEntityID = mm.getEntityByMetaAlias(myMetaAlias);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster } else if (!spMetaAliases.isEmpty()) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster iAmSp = true;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster myTitle = spTitle;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster partnerTitle = idpTitle;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster myMetaAlias = (String)spMetaAliases.get(0);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster myEntityID = mm.getEntityByMetaAlias(myMetaAlias);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if(!iAmIdp && !iAmSp) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster response.sendError(response.SC_BAD_REQUEST,
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster "No SAML2 Service Hosted Here, "
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster + " Verify SAML2 Metadata Configuration");
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster } else {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if (iAmIdp) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if (spEntities.isEmpty()) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster response.sendError(response.SC_BAD_REQUEST,
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster "This is an IDP, "
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster + "No SAML2 Trusted Partner SP Service Registered Here,"
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster + " Verify SAML2 Metadata Configuration");
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster } else {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster partnerEntityID = (String)spEntities.get(0);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster idpTitle = idpTitle + "(IDP: " + myEntityID + ")";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster myTitle = idpTitle;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster spTitle = spTitle + "(SP: " + partnerEntityID + ")";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster partnerTitle = spTitle;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if (iAmSp) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if (idpEntities.isEmpty()) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster response.sendError(response.SC_BAD_REQUEST,
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster "This is an SP, "
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster + "No SAML2 Trusted IDP Service Registered Here, "
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster + " Verify SAML2 Metadata Configuration");
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster } else {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster partnerEntityID = (String)idpEntities.get(0);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster spTitle = spTitle + "(SP: " + myEntityID + ")";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster myTitle = spTitle;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster idpTitle = idpTitle + "(IDP: " + partnerEntityID + ")";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster partnerTitle = idpTitle;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster //find partnerSampleHomeUrl
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if (iAmIdp && (partnerEntityID != null)) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster SPSSODescriptorElement partnerDescriptor
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster = mm.getSPSSODescriptor(REALM, partnerEntityID);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster List partnerSlosList
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster = partnerDescriptor.getSingleLogoutService();
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if ((partnerSlosList == null) || partnerSlosList.isEmpty()) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster response.sendError(response.SC_BAD_REQUEST,
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster "Could not determine partner samples base");
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster } else {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster SingleLogoutServiceElement slose
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster = (SingleLogoutServiceElement)partnerSlosList.get(0);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String slosUrl = slose.getLocation();
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster partnerSampleHomeUrl = slosUrl.substring(0,
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster slosUrl.indexOf("SPSlo"))
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster + SAMPLES_DIR + "/home.jsp";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if (reserveCarWithPartnerUrl == null) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster reserveCarWithPartnerUrl = partnerSampleHomeUrl.substring(0,
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster partnerSampleHomeUrl.indexOf("home.jsp"))
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster + "/reserveCar.jsp";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster } else if (iAmSp && (partnerEntityID != null)) { //i am sp
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster IDPSSODescriptorElement partnerDescriptor
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster = mm.getIDPSSODescriptor(REALM, partnerEntityID);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster List partnerSlosList
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster = partnerDescriptor.getSingleLogoutService();
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if ((partnerSlosList == null) || partnerSlosList.isEmpty()) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster response.sendError(response.SC_BAD_REQUEST,
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster "Could not determine partner samples base");
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster } else {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster SingleLogoutServiceElement slose
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster = (SingleLogoutServiceElement)partnerSlosList.get(0);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String slosUrl = slose.getLocation();
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster partnerSampleHomeUrl = slosUrl.substring(0,
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster slosUrl.indexOf("IDPSlo"))
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster + SAMPLES_DIR + "/home.jsp";
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if ((partnerEntityID != null) && (partnerSampleHomeUrl != null)) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster try {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster SSOTokenManager tokenManager = SSOTokenManager.getInstance();
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster ssoToken = tokenManager.createSSOToken(request);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if ((ssoToken != null) && tokenManager.isValidToken(ssoToken)) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster userLoggedIn = true;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if(iAmSp) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster String spMetaAlias = ssoToken.getProperty(SAML2Constants.SP_METAALIAS);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if (spMetaAlias==null || spMetaAlias.trim().length() == 0){
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster //if detect presence of SP MetaAlias property then
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster //it means login was thru SAML, else if not then local
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster isLocalLogin = true;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster } else {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster //login was thru SAML since SP_METAALIAS was set
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster isLocalLogin = false;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster userName = ssoToken.getProperty(UNIVERSAL_IDENTIFIER);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster userLabel = userName;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster int j = userName.indexOf("=");
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster int k = userName.indexOf(",");
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if ((j > 0) && (k > j)) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster userLabel = userName.substring(j+1,k).trim();
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster userLabel = userLabel.substring(0,1).toUpperCase()
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster + ((userLabel.length() > 0)
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster ? userLabel.substring(1, userLabel.length())
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster : "");
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster } catch (SSOException e) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster //response.sendError(response.SC_INTERNAL_SERVER_ERROR);
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster if (userLoggedIn) {
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster federatedWithPartner = (AccountUtils.getAccountFederation(
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster userName, myEntityID, partnerEntityID) == null) ? false : true;
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster }
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster%>
4fe4e4f798a84a46e567f64ceadd3648eb0582d4Allan Foster