/******************************************************************************* *******************************************************************************/ 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 getIDPPossibleNameITTypes() { return Arrays.asList(NameIDType.PERSISTENT, NameIDType.TRANSIENT, NameIDType.UNSPECIFIED); } @Override public List getSPRequiredAttributes() { return null; } @Override public List getSPAllowedNameITTypes() { return null; } @Override public boolean wantAssertionSigned() { return false; } @Override public boolean wantAuthnRequestSigned() { return true; } }