/******************************************************************************* * Copyright 2018 A-SIT Plus GmbH * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. * * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "License"); * You may not use this work except in compliance with the License. * You may obtain a copy of the License at: * https://joinup.ec.europa.eu/news/understanding-eupl-v12 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. *******************************************************************************/ /******************************************************************************* *******************************************************************************/ package at.asitplus.eidas.specific.connector.config; import java.util.Arrays; import java.util.List; import org.opensaml.saml2.core.Attribute; import org.opensaml.saml2.core.NameIDType; import org.opensaml.saml2.metadata.ContactPerson; import org.opensaml.saml2.metadata.Organization; import org.opensaml.saml2.metadata.RequestedAttribute; import org.opensaml.xml.security.credential.Credential; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import at.asitplus.eidas.specific.connector.MSeIDASNodeConstants; import at.gv.egiz.eaaf.core.api.idp.IConfiguration; import at.gv.egiz.eaaf.core.exceptions.EaafException; import at.gv.egiz.eaaf.modules.pvp2.api.IPvp2BasicConfiguration; import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvpMetadataBuilderConfiguration; import at.gv.egiz.eaaf.modules.pvp2.exception.CredentialsNotAvailableException; import at.gv.egiz.eaaf.modules.pvp2.impl.builder.PvpAttributeBuilder; import at.gv.egiz.eaaf.modules.pvp2.impl.utils.AbstractCredentialProvider; public class PVPMetadataConfiguration implements IPvpMetadataBuilderConfiguration{ private static final Logger log = LoggerFactory.getLogger(PVPMetadataConfiguration.class); private IConfiguration basicConfig; private String authUrl; private AbstractCredentialProvider pvpIDPCredentials; private IPvp2BasicConfiguration pvpBasicConfig; public PVPMetadataConfiguration(IConfiguration basicConfig, String authURL, IPvp2BasicConfiguration pvpBasicConfig, AbstractCredentialProvider pvpIDPCredentials) { this.authUrl = authURL; this.pvpIDPCredentials = pvpIDPCredentials; this.basicConfig = basicConfig; this.pvpBasicConfig = pvpBasicConfig; } @Override public String getSpNameForLogging() { return "PVP2 S-Profile IDP"; } @Override public int getMetadataValidUntil() { return Integer.valueOf(basicConfig.getBasicConfiguration( MSeIDASNodeConstants.PROP_CONFIG_PVP2_METADATA_VALIDITY, String.valueOf(MSeIDASNodeConstants.DEFAULT_PVP_METADATA_VALIDITY))); } @Override public boolean buildEntitiesDescriptorAsRootElement() { return false; } @Override public boolean buildIdpSsoDescriptor() { return true; } @Override public boolean buildSpSsoDescriptor() { return false; } @Override public String getEntityID() { try { return pvpBasicConfig.getIdpEntityId(authUrl); } catch (EaafException e) { log.error("Can NOT build PVP metadata configuration.", e); throw new RuntimeException("Can NOT build PVP metadata configuration."); } } @Override public String getEntityFriendlyName() { return null; } @Override public List getContactPersonInformation() { try { return pvpBasicConfig.getIdpContacts(); } catch (EaafException e) { log.error("Can NOT build PVP metadata configuration.", e); throw new RuntimeException("Can NOT build PVP metadata configuration."); } } @Override public Organization getOrgansiationInformation() { try { return pvpBasicConfig.getIdpOrganisation(); } catch (EaafException e) { log.error("Can NOT build PVP metadata configuration.", e); throw new RuntimeException("Can NOT build PVP metadata configuration."); } } @Override public Credential getMetadataSigningCredentials() throws CredentialsNotAvailableException { return pvpIDPCredentials.getIdpMetaDataSigningCredential(); } @Override public Credential getRequestorResponseSigningCredentials() throws CredentialsNotAvailableException { return pvpIDPCredentials.getIdpAssertionSigningCredential(); } @Override public Credential getEncryptionCredentials() throws CredentialsNotAvailableException { return null; } @Override public String getIdpWebSsoPostBindingUrl() { try { return pvpBasicConfig.getIdpSsoPostService(authUrl); } catch (EaafException e) { log.error("Can NOT build PVP metadata configuration.", e); throw new RuntimeException("Can NOT build PVP metadata configuration."); } } @Override public String getIdpWebSsoRedirectBindingUrl() { try { return pvpBasicConfig.getIdpSsoRedirectService(authUrl); } catch (EaafException e) { log.error("Can NOT build PVP metadata configuration.", e); throw new RuntimeException("Can NOT build PVP metadata configuration."); } } @Override public String getIdpSloPostBindingUrl() { return null; } @Override public String getIdpSloRedirectBindingUrl() { return null; } @Override public String getSpAssertionConsumerServicePostBindingUrl() { return null; } @Override public String getSpAssertionConsumerServiceRedirectBindingUrl() { return null; } @Override public String getSpSloPostBindingUrl() { return null; } @Override public String getSpSloRedirectBindingUrl() { return null; } @Override public String getSpSloSoapBindingUrl() { return null; } @Override public List getIdpPossibleAttributes() { return PvpAttributeBuilder.buildSupportedEmptyAttributes(); } @Override public List getIdpPossibleNameIdTypes() { return Arrays.asList(NameIDType.PERSISTENT, NameIDType.TRANSIENT, NameIDType.UNSPECIFIED); } @Override public List getSpRequiredAttributes() { return null; } @Override public List getSpAllowedNameIdTypes() { return null; } @Override public boolean wantAssertionSigned() { return false; } @Override public boolean wantAuthnRequestSigned() { return true; } }