package at.gv.egovernment.moa.id.auth.modules.eidproxyauth.utils; import java.util.List; import org.apache.commons.lang3.StringUtils; import at.gv.egiz.eaaf.core.api.idp.IConfiguration; import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration; import at.gv.egiz.eaaf.core.impl.utils.KeyValueUtils; import at.gv.egovernment.moa.id.auth.modules.eidproxyauth.EIDProxyAuthConstants; import at.gv.egovernment.moa.id.commons.api.AuthConfiguration; import at.gv.egovernment.moa.id.commons.api.IOAAuthParameters; import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants; import at.gv.egovernment.moa.logging.Logger; import at.gv.egovernment.moa.util.MiscUtil; public class Utils { public static final String CONFIG_PROP_EID_APPREG_ID_LAYOUT_V2 = "modules.eidproxyauth.appreg.id.layout.v2"; public static final String PARAM_APPREG_SP_ID = "?sp="; public static final String PARAM_PROTOCOL_SAML1 = "/saml1"; public static final String PARAM_PROTOCOL_SAML2 = "/saml2"; public static final String PARAM_PROTOCOL_OIDC = "/oidc"; public static String getEidSystemApplicationId(ISPConfiguration spConfiguration, String authUrl, IConfiguration authConfig) { StringBuilder builder = new StringBuilder(); if (authUrl.endsWith("/")) { builder.append(authUrl.substring(0, authUrl.length() - 1)); } else { builder.append(authUrl); } if (authConfig.getBasicConfigurationBoolean(Utils.CONFIG_PROP_EID_APPREG_ID_LAYOUT_V2, true)) { builder.append(selectProtocolFromSpConfig(spConfiguration)); } builder.append(PARAM_APPREG_SP_ID); builder.append(spConfiguration.getUniqueIdentifier()); return builder.toString(); } private static String selectProtocolFromSpConfig(ISPConfiguration spConfiguration) { if (spConfiguration instanceof IOAAuthParameters) { IOAAuthParameters spConf = (IOAAuthParameters) spConfiguration; if (MiscUtil.isNotEmpty( spConf.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL))) { Logger.debug("SP: " + spConf.getUniqueIdentifier() + " marked as: " + PARAM_PROTOCOL_SAML2); return PARAM_PROTOCOL_SAML2; } else if (MiscUtil.isNotEmpty( spConf.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_REDIRECTURL))) { Logger.debug("SP: " + spConf.getUniqueIdentifier() + " marked as: " + PARAM_PROTOCOL_OIDC); return PARAM_PROTOCOL_OIDC; } } else { Logger.warn("Can NOT estimate type of SPConfiguration. Use SAML1 as default"); } Logger.debug("SP: " + spConfiguration.getUniqueIdentifier() + " marked as: " + PARAM_PROTOCOL_SAML1); return PARAM_PROTOCOL_SAML1; } public static String getEIDSystemEntityId(ISPConfiguration spConfiguration, IConfiguration authConfig) { //load from service-provider configuration String msNodeEntityID = spConfiguration.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_EXTERNAL_EID_SYSTEM_SERVICE_URL); if (StringUtils.isEmpty(msNodeEntityID)) { Logger.debug("No SP-specific E-ID system URL. Switch to general configuration ... "); if (authConfig instanceof AuthConfiguration) { AuthConfiguration moaAuthConfig = (AuthConfiguration)authConfig; List configuratedEntityIDs = KeyValueUtils.getListOfCSVValues( moaAuthConfig.getConfigurationWithKey(MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_EID_SYSTEM_SERVICE_URL)); if (configuratedEntityIDs.size() > 0) msNodeEntityID = configuratedEntityIDs.get(0); else Logger.info("No E-ID system URL in IDP configuration. Switch to backup configuration ... "); } else Logger.info("Basic configuration is NOT of type '" + AuthConfiguration.class.getName() + "' Switch to generic Type ... "); if (StringUtils.isEmpty(msNodeEntityID)) msNodeEntityID = authConfig.getBasicConfiguration(EIDProxyAuthConstants.CONFIG_PROPS_NODE_ENTITYID); } return msNodeEntityID; } }