a4544a5a0e622ef69e38641f87ab1b5685e05911Phill Cunnington/*
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Copyright (c) 2009 Sun Microsystems Inc. All Rights Reserved
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * The contents of this file are subject to the terms
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * of the Common Development and Distribution License
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * (the License). You may not use this file except in
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * compliance with the License.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * You can obtain a copy of the License at
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * opensso/legal/CDDLv1.0.txt
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * See the License for the specific language governing
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * permission and limitations under the License.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * When distributing Covered Code, include this CDDL
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Header Notice in each file and include the License file
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * at opensso/legal/CDDLv1.0.txt.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * If applicable, add the following below the CDDL Header,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * with the fields enclosed by brackets [] replaced by
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * your own identifying information:
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * "Portions Copyrighted [year] [name of copyright owner]"
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * $Id: ConfigFedMonitoring.java,v 1.2 2009/10/29 00:03:51 exu Exp $
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts * Portions Copyrighted 2011-2016 ForgeRock AS.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterpackage com.sun.identity.configuration;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpottsimport static org.forgerock.openam.utils.Time.*;
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.iplanet.sso.SSOException;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.iplanet.sso.SSOToken;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.cot.CircleOfTrustManager;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.cot.COTConstants;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.cot.COTException;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.federation.meta.IDFFMetaManager;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.federation.meta.IDFFMetaException;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.monitoring.Agent;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.monitoring.MonitoringUtil;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.monitoring.SSOServerRealmFedInfo;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.saml2.meta.SAML2MetaException;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.saml2.meta.SAML2MetaManager;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.saml2.meta.SAML2MetaUtils;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.saml2.jaxb.metadata.EntityDescriptorElement;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.security.AdminTokenAction;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.shared.debug.Debug;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.sm.AttributeSchema;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.sm.OrganizationConfigManager;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.sm.SchemaType;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.sm.ServiceSchema;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.sm.ServiceSchemaManager;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.sm.SMSException;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.wsfederation.meta.WSFederationMetaManager;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.wsfederation.meta.WSFederationMetaException;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.wsfederation.jaxb.wsfederation.FederationElement;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.wsfederation.jaxb.wsfederation.UriNamedClaimTypesOfferedElement;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.wsfederation.jaxb.wsfederation.TokenIssuerEndpointElement;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.security.AccessController;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.text.SimpleDateFormat;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.ArrayList;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.Collections;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.Date;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.HashMap;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.Iterator;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.List;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.Map;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.Set;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.StringTokenizer;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster/**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * This class gathers the configuration information for the
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * monitoring service, which is initially started in WebtopNaming.java
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Configuration information can be gathered after Session services
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * have started up.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterpublic class ConfigFedMonitoring {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Debug debug;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SSOToken ssoToken;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private ArrayList realmList;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public static final String IDENTITY_PROVIDER = "IDP";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public static final String SERVICE_PROVIDER = "SP";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public static final String POLICY_DECISION_POINT_DESCRIPTOR = "PDP";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public static final String POLICY_ENFORCEMENT_POINT_DESCRIPTOR = "PEP";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public static final String SAML_ATTRAUTHORITY = "AttrAuthority";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public static final String SAML_AUTHNAUTHORITY = "AuthnAuthority";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public static final String SAML_ATTRQUERY = "AttrQuery";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public static final String AFFILIATE = "Affiliate";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public ConfigFedMonitoring() {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /*
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * this method is called by AMSetupServlet, when it's done
8d3140b524c0e28c0a49dc7c7d481123ef3cfe11Chris Lee * configuring the OpenAM server after deployment. it's also
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * called by the MonitoringConfiguration load-on-startup servlet
8d3140b524c0e28c0a49dc7c7d481123ef3cfe11Chris Lee * when the OpenAM server is restarted any time after being
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * configured. it completes the configuring of the monitoring
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * agent with the config information that requires an SSOToken
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * to retrieve. there is another part of the configuration supplied
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * to the agent by WebtopNaming.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public void configureFedMonitoring() {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts Date date1 = newDate();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String startDate = sdf.format(date1);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug = Debug.getInstance("amMonitoring");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String classMethod = "ConfigFedMonitoring.configureMonitoring: ";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (!MonitoringUtil.isRunning()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.warningEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.warning(classMethod + "monitoring is disabled");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster ssoToken = getSSOToken();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (SSOException ssoe) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod + "Could not get proper SSOToken", ssoe);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /*
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * get the SAML1.x trusted partners and sent to the Agent.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * these are global
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster getSAML1TPs();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // now all the realms' federation configs
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster getAllRealms("/");
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts date1 = newDate();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.message(classMethod + "\n" +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster " Start time " + startDate + "\n" +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster " End time = " + sdf.format(date1));
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private SSOToken getSSOToken() throws SSOException {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return (SSOToken) AccessController.doPrivileged(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster AdminTokenAction.getInstance());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private void getSAML1TPs() {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String classMethod = "ConfigFedMonitoring.getSAML1TPs: ";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // get SAML service attributes
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map attributeSchemas = new HashMap();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster ServiceSchemaManager svcSchMgr =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster new ServiceSchemaManager("iPlanetAMSAMLService", ssoToken);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set schemaTypes = svcSchMgr.getSchemaTypes();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator it = schemaTypes.iterator(); it.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SchemaType type = (SchemaType)it.next();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster ServiceSchema schema = svcSchMgr.getSchema(type);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (schema != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String curSchemaType = type.getType();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set asch = schema.getAttributeSchemas();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator iu = asch.iterator(); iu.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster AttributeSchema as = (AttributeSchema)iu.next();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String i18n = as.getI18NKey();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((i18n != null) && (i18n.trim().length() > 0)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster attributeSchemas.put(as.getName(), as);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // get the trusted partners
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster StringBuffer cotsb =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster new StringBuffer(classMethod + "SAML1.x Trusted Partners:\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster AttributeSchema as =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster (AttributeSchema)attributeSchemas.get(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "iplanet-am-saml-partner-urls");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set orgValues = (Set)as.getDefaultValues();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster int ovsize = orgValues.size();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster cotsb.append(" has ").append(ovsize).append(" entries:\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster List s1List = new ArrayList(ovsize);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (ovsize > 0) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator iu = orgValues.iterator(); iu.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String prtn = (String)iu.next();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster StringTokenizer st = new StringTokenizer(prtn, "|");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster int numtoks = st.countTokens();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster cotsb.append(" #tokens = ").append(numtoks).
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster append("\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String xx = null;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster while (st.hasMoreTokens()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster prtn = st.nextToken();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster StringTokenizer st2 = new StringTokenizer(prtn, "=");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (st2.countTokens() == 2) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String st3 = st2.nextToken();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster xx = st2.nextToken();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (st3.equalsIgnoreCase("PARTNERNAME")) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster cotsb.append(" **got PARTNERNAME**\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster s1List.add(xx);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster cotsb.append(" ").append(xx).append("\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.message(cotsb.toString());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // send SAML1.x trusted partners list, s1List, to the Agent
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Agent.saml1TPConfig (s1List);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (SSOException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod + "sso ex getting saml1.x: " +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster e.getMessage());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (SMSException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod + "sms ex getting saml1.x: " +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster e.getMessage());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /*
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * get the list of realms, starting from "startRealm", usu. "/".
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * return List with realms, with leading "/".
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private List getRealmsList(String startRealm) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String classMethod = "ConfigFedMonitoring.getRealmsList: ";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster int rlmCnt = 1; // for startRealm
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster OrganizationConfigManager orgMgr =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster new OrganizationConfigManager(ssoToken, startRealm);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set orgs = orgMgr.getSubOrganizationNames("*", true);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster rlmCnt += orgs.size();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster realmList = new ArrayList(rlmCnt);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster realmList.add(startRealm);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator it = orgs.iterator(); it.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String ss = "/" + (String)it.next();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster realmList.add(ss);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return(realmList);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (SMSException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "SMSException getting OrgConfigMgr: " + e.getMessage());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return (new ArrayList());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private void getAllRealms(String startRealm) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String classMethod = "ConfigFedMonitoring.getAllRealms: ";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster boolean skipSAML2Entities = true; // until IDPs/SPs per realm instrum
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster StringBuffer sb = new StringBuffer(classMethod);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append("orgnames starting from ").append(startRealm).append(":\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append(" ").append(startRealm).append("\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster List rList = getRealmsList(startRealm);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster CircleOfTrustManager cotmgr = new CircleOfTrustManager();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SAML2MetaManager saml2Mgr = new SAML2MetaManager();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster IDFFMetaManager idffmgr = new IDFFMetaManager(ssoToken);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator it = rList.iterator(); it.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String thisRealm = (String)it.next();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set cots = getCOTs(thisRealm, cotmgr);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map s2Ents = null;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (!skipSAML2Entities) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster s2Ents = getSAML2Entities(thisRealm, saml2Mgr);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map wsEnts = getWSFedEntities(thisRealm);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map idffentMap = getIDFFEntities(thisRealm, idffmgr);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /*
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * getCOTMembers(thisRealm, cot, cotmgr, cotsb)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * can get the members of the COT, but there isn't
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * a (MIB) entry that right now.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map membMap = getCOTMembers(thisRealm, cots, cotmgr);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SSOServerRealmFedInfo srfi =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster new SSOServerRealmFedInfo.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SSOServerRealmFedInfoBuilder(thisRealm).
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster cots(cots).
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster samlv2Entities(s2Ents).
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wsEntities(wsEnts).
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster idffEntities(idffentMap).
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster membEntities(membMap).build();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Agent.federationConfig(srfi);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (SAML2MetaException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod + "SAML2 ex: " + e.getMessage());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (COTException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod + "COT ex: " + e.getMessage());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (IDFFMetaException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod + "IDFF ex: " + e.getMessage());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public List getWSFedRoles(String entity, String realm) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster List roles = new ArrayList(4);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster boolean isSP = true;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster int cnt = 0;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster WSFederationMetaManager metaManager = new WSFederationMetaManager();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (metaManager.getIDPSSOConfig(realm,entity) != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(IDENTITY_PROVIDER);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (metaManager.getSPSSOConfig(realm, entity) != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(SERVICE_PROVIDER);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster //to handle dual roles specifically for WSFED
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (roles.isEmpty()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster FederationElement fedElem =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster metaManager.getEntityDescriptor(realm, entity);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (fedElem != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator iter = fedElem.getAny().iterator();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster iter.hasNext(); )
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Object o = iter.next();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (o instanceof UriNamedClaimTypesOfferedElement) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(IDENTITY_PROVIDER);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster isSP = false;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } else if (o instanceof TokenIssuerEndpointElement) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster cnt++;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((isSP) || (cnt >1)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(SERVICE_PROVIDER);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (WSFederationMetaException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.warning("ConfigFedMonitoring.getWSFedRoles", e);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return (roles != null) ? roles : Collections.EMPTY_LIST;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /*
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * This is used to determine what 'roles' a particular entity is
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * acting as. It will producs a list of role names which can then
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * be used by the calling routine for whatever purpose it needs.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private List getSAMLv2Roles(String entity, String realm) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster List roles = new ArrayList();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SAML2MetaManager samlManager = new SAML2MetaManager();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster EntityDescriptorElement d =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster samlManager.getEntityDescriptor(realm, entity);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (d != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // find out what role this dude is playing
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (SAML2MetaUtils.getSPSSODescriptor(d) != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(SERVICE_PROVIDER);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (SAML2MetaUtils.getIDPSSODescriptor(d) != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(IDENTITY_PROVIDER);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (SAML2MetaUtils.getPolicyDecisionPointDescriptor(d) != null)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(POLICY_DECISION_POINT_DESCRIPTOR);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (SAML2MetaUtils.getPolicyEnforcementPointDescriptor(d) !=
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster null)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(POLICY_ENFORCEMENT_POINT_DESCRIPTOR);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (SAML2MetaUtils.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster getAttributeAuthorityDescriptor(d) != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(SAML_ATTRAUTHORITY);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (SAML2MetaUtils.getAuthnAuthorityDescriptor(d) != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(SAML_AUTHNAUTHORITY);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (SAML2MetaUtils.getAttributeQueryDescriptor(d) != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(SAML_ATTRQUERY);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (samlManager.getAffiliationDescriptor(realm, entity) !=
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster null)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(AFFILIATE);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (SAML2MetaException s) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.warningEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.warning("ConfigFedMonitoring.getSAMLv2Roles() - " +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "Couldn't get SAMLMetaManager");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return (roles != null) ? roles : Collections.EMPTY_LIST;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /*
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * This is used to determine what 'roles' a particular entity is
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * acting as. It will producs a list of role names which can then
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * be used by the calling routine for whatever purpose it needs.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private List getIDFFRoles(String entity, String realm) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster List roles = new ArrayList(6);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster IDFFMetaManager idffManager = new IDFFMetaManager(ssoToken);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // find out what role this dude is playing
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (idffManager.getIDPDescriptor(realm, entity) != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(IDENTITY_PROVIDER);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (idffManager.getSPDescriptor(realm, entity) != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(SERVICE_PROVIDER);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if(idffManager.getAffiliationDescriptor(realm, entity) != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster roles.add(AFFILIATE);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (IDFFMetaException s) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.warningEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.warning("ConfigFedMonitoring.getIDFFRoles() - " +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "Couldn't get SAMLMetaManager");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return roles;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * This is a convenience routine that can be used
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * to convert a List of String objects to a single String in the format of
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * "one; two; three"
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private String listToString(List roleNames) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster StringBuffer sb = new StringBuffer();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator i = roleNames.iterator(); i.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String role = (String)i.next();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (sb.length() > 0) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append("; ");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append(getLocalizedString(role));
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return sb.toString();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private String getLocalizedString(String key) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return key;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private Set getCOTs(String realm, CircleOfTrustManager cotmgr) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String classMethod = "ConfigFedMonitoring.getCOTs: ";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set cotSet = null;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster cotSet = cotmgr.getAllCirclesOfTrust(realm);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (COTException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod + "COTMgr error: " + e.getMessage());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return cotSet;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private Map getCOTMembers(String realm, Set cotNames,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster CircleOfTrustManager cotmgr)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String classMethod = "ConfigFedMonitoring.getCOTMembers: ";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster StringBuffer sb = new StringBuffer(classMethod);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map cotMap = new HashMap();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator it1 = cotNames.iterator(); it1.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String cotName = (String)it1.next();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append(" cotName = ").append(cotName).append("\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map memMap = new HashMap();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set cotSAML =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster cotmgr.listCircleOfTrustMember(realm, cotName,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster COTConstants.SAML2);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set cotIDFF =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster cotmgr.listCircleOfTrustMember(realm, cotName,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster COTConstants.IDFF);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set cotWSFed =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster cotmgr.listCircleOfTrustMember(realm, cotName,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster COTConstants.WS_FED);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster memMap.put("SAML", cotSAML);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster memMap.put("IDFF", cotIDFF);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster memMap.put("WSFed", cotWSFed);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster cotMap.put(cotName, memMap);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append(" SAMLv2 members: ");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((cotSAML != null) && (cotSAML.size() > 0)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator it = cotSAML.iterator(); it.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append(" ").append((String)it.next()).
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster append("\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } else {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append("none\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append(" IDFF members: ");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((cotIDFF != null) && (cotIDFF.size() > 0)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator it = cotIDFF.iterator(); it.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append(" ").append((String)it.next()).
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster append("\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } else {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append("none\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append(" WSFed members: ");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((cotWSFed != null) && (cotWSFed.size() > 0)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator it = cotWSFed.iterator(); it.hasNext(); ){
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append(" ").append((String)it.next()).
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster append("\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } else {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster sb.append("none\n");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (COTException cx) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod + "COTException: " + cx.getMessage());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(sb.toString());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return cotMap;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private Map getSAML2Entities (String realm, SAML2MetaManager saml2Mgr) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String classMethod = "ConfigFedMonitoring.getSAML2Entities:";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set s2Ents = null;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // s2entMap: entity name => Map of ("location", "roles") -> values
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map s2entMap = new HashMap(); // for the SAML2 entities
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster s2Ents = saml2Mgr.getAllEntities(realm);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster List hosted = saml2Mgr.getAllHostedEntities(realm);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator it = s2Ents.iterator(); it.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map wse = new HashMap();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String entId = (String)it.next();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((hosted != null) && hosted.contains(entId)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wse.put("location", "hosted");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } else {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wse.put("location", "remote");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wse.put("roles", listToString(getSAMLv2Roles(entId, realm)));
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster s2entMap.put(entId, wse);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (SAML2MetaException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "getting SAML2 entity providers for realm " + realm + ": " +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster e.getMessage());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return s2entMap;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private Map getWSFedEntities (String realm) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String classMethod = "ConfigFedMonitoring.getWSFedEntities:";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set wsEnts = null;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // wsentMap: entity name => Map of ("location", "roles") -> values
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map wsentMap = new HashMap();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster WSFederationMetaManager metaManager = new WSFederationMetaManager();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wsEnts = metaManager.getAllEntities(realm);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster List hosted = metaManager.getAllHostedEntities(realm);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator it = wsEnts.iterator(); it.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map wse = new HashMap();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String entId = (String)it.next();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((hosted != null) && hosted.contains(entId)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wse.put("location", "hosted");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } else {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wse.put("location", "remote");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wse.put("roles", listToString(getWSFedRoles(entId, realm)));
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wsentMap.put(entId, wse);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (WSFederationMetaException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod + "getting WSFed entities for realm " +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster realm + ": " + e.getMessage());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return wsentMap;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private Map getIDFFEntities (String realm, IDFFMetaManager idffMgr) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String classMethod = "ConfigFedMonitoring.getIDFFEntities:";
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Set idffEnts = null;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster // idffentMap: entity name => Map of ("location", "roles") -> values
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map idffentMap = new HashMap(); // for the IDFF entities
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster idffEnts = idffMgr.getAllEntities(realm);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster List hosted = idffMgr.getAllHostedEntities(realm);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster for (Iterator it = idffEnts.iterator(); it.hasNext(); ) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map wse = new HashMap();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String entId = (String)it.next();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((hosted != null) && hosted.contains(entId)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wse.put("location", "hosted");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } else {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wse.put("location", "remote");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster wse.put("roles", listToString(getIDFFRoles(entId, realm)));
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster idffentMap.put(entId, wse);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (IDFFMetaException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(classMethod +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "getting IDFF entity providers for realm " + realm + ": " +
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster e.getMessage());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return idffentMap;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster}