diff options
5 files changed, 95 insertions, 5 deletions
| diff --git a/basicConfig/default_config.properties b/basicConfig/default_config.properties index 4cb6fa0a..dda5144e 100644 --- a/basicConfig/default_config.properties +++ b/basicConfig/default_config.properties @@ -88,6 +88,13 @@ eidas.ms.pvp2.key.signing.alias=  eidas.ms.pvp2.key.signing.password=  eidas.ms.pvp2.metadata.validity=24 +eidas.ms.pvp2.metadata.organisation.name=JUnit +eidas.ms.pvp2.metadata.organisation.friendyname=For testing with jUnit +eidas.ms.pvp2.metadata.organisation.url=http://junit.test +eidas.ms.pvp2.metadata.contact.givenname=Max +eidas.ms.pvp2.metadata.contact.surname=Mustermann +eidas.ms.pvp2.metadata.contact.email=max@junit.test +  ## Service Provider configuration  eidas.ms.sp.0.uniqueID=  eidas.ms.sp.0.pvp2.metadata.truststore= diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpEndPointConfiguration.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpEndPointConfiguration.java index 82be730c..d7d88017 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpEndPointConfiguration.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpEndPointConfiguration.java @@ -23,10 +23,19 @@  package at.asitplus.eidas.specific.connector.config; +import java.util.Arrays;  import java.util.List; +import org.apache.commons.lang3.StringUtils;  import org.opensaml.saml.saml2.metadata.ContactPerson; +import org.opensaml.saml.saml2.metadata.ContactPersonTypeEnumeration; +import org.opensaml.saml.saml2.metadata.EmailAddress; +import org.opensaml.saml.saml2.metadata.GivenName;  import org.opensaml.saml.saml2.metadata.Organization; +import org.opensaml.saml.saml2.metadata.OrganizationDisplayName; +import org.opensaml.saml.saml2.metadata.OrganizationName; +import org.opensaml.saml.saml2.metadata.OrganizationURL; +import org.opensaml.saml.saml2.metadata.SurName;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import org.springframework.beans.factory.annotation.Autowired; @@ -34,13 +43,17 @@ import org.springframework.stereotype.Service;  import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;  import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException;  import at.gv.egiz.eaaf.core.exceptions.EaafException;  import at.gv.egiz.eaaf.modules.pvp2.api.IPvp2BasicConfiguration; +import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;  @Service("PVPEndPointConfiguration")  public class PvpEndPointConfiguration implements IPvp2BasicConfiguration {    private static final Logger log = LoggerFactory.getLogger(PvpEndPointConfiguration.class); +  private static final String DEFAULT_XML_LANG = "en"; +      @Autowired(required = true)    IConfiguration basicConfiguration; @@ -71,14 +84,52 @@ public class PvpEndPointConfiguration implements IPvp2BasicConfiguration {    @Override    public List<ContactPerson> getIdpContacts() throws EaafException { -    // Return contact person, if it shall be included in metadata -    return null; +    final ContactPerson contactPerson = Saml2Utils.createSamlObject(ContactPerson.class); +    final GivenName givenName = Saml2Utils.createSamlObject(GivenName.class); +    final SurName surname = Saml2Utils.createSamlObject(SurName.class); +    final EmailAddress emailAddress = Saml2Utils.createSamlObject(EmailAddress.class); + +    givenName.setName(getAndVerifyFromConfiguration( +        MsEidasNodeConstants.CONFIG_PROPS_METADATA_CONTACT_GIVENNAME)); +    surname.setName(getAndVerifyFromConfiguration( +        MsEidasNodeConstants.CONFIG_PROPS_METADATA_CONTACT_SURNAME)); +    emailAddress.setAddress(getAndVerifyFromConfiguration( +        MsEidasNodeConstants.CONFIG_PROPS_METADATA_CONTACT_EMAIL)); + +    contactPerson.setType(ContactPersonTypeEnumeration.TECHNICAL); +    contactPerson.setGivenName(givenName); +    contactPerson.setSurName(surname); +    contactPerson.getEmailAddresses().add(emailAddress); + +    return Arrays.asList(contactPerson); +    }    @Override    public Organization getIdpOrganisation() throws EaafException { -    // Return organization, if it shall be included in metadata -    return null; +    final Organization organisation = Saml2Utils.createSamlObject(Organization.class); +    final OrganizationName orgName = Saml2Utils.createSamlObject(OrganizationName.class); +    final OrganizationDisplayName orgDisplayName = Saml2Utils.createSamlObject(OrganizationDisplayName.class); +    final OrganizationURL orgUrl = Saml2Utils.createSamlObject(OrganizationURL.class); + +    orgName.setXMLLang(DEFAULT_XML_LANG); +    orgName.setValue(getAndVerifyFromConfiguration( +        MsEidasNodeConstants.CONFIG_PROPS_METADATA_ORGANISATION_NAME)); + +    orgDisplayName.setXMLLang(DEFAULT_XML_LANG); +    orgDisplayName.setValue(getAndVerifyFromConfiguration( +        MsEidasNodeConstants.CONFIG_PROPS_METADATA_ORGANISATION_FRIENDLYNAME)); + +    orgUrl.setXMLLang(DEFAULT_XML_LANG); +    orgUrl.setValue(getAndVerifyFromConfiguration( +        MsEidasNodeConstants.CONFIG_PROPS_METADATA_ORGANISATION_URL)); + + +    organisation.getOrganizationNames().add(orgName); +    organisation.getDisplayNames().add(orgDisplayName); +    organisation.getURLs().add(orgUrl); + +    return organisation;    }    @Override @@ -93,4 +144,15 @@ public class PvpEndPointConfiguration implements IPvp2BasicConfiguration {        return url;      }    } +   +  private String getAndVerifyFromConfiguration(String configKey) throws EaafConfigurationException { +    final String value = basicConfiguration.getBasicConfiguration(configKey); +    if (StringUtils.isEmpty(value)) { +      throw new EaafConfigurationException("config.08", +          new Object[] {configKey}); + +    } + +    return value; +  }  } diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpMetadataProvider.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpMetadataProvider.java index 7738b0be..43f1740f 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpMetadataProvider.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpMetadataProvider.java @@ -31,6 +31,7 @@ import java.security.cert.CertificateException;  import java.security.cert.X509Certificate;  import java.text.MessageFormat;  import java.util.ArrayList; +import java.util.Collections;  import java.util.List;  import org.apache.commons.lang3.StringUtils; @@ -168,7 +169,7 @@ public class PvpMetadataProvider extends AbstractChainingMetadataProvider {    @Override    protected List<String> getAllMetadataUrlsFromConfiguration() throws EaafConfigurationException { -    return null; +    return Collections.emptyList();    }    @Override diff --git a/connector/src/test/resources/config/junit_config_1.properties b/connector/src/test/resources/config/junit_config_1.properties index 982d3e24..8bff74a9 100644 --- a/connector/src/test/resources/config/junit_config_1.properties +++ b/connector/src/test/resources/config/junit_config_1.properties @@ -88,6 +88,13 @@ eidas.ms.pvp2.key.signing.alias=  eidas.ms.pvp2.key.signing.password=  eidas.ms.pvp2.metadata.validity=24 +eidas.ms.pvp2.metadata.organisation.name=JUnit +eidas.ms.pvp2.metadata.organisation.friendyname=For testing with jUnit +eidas.ms.pvp2.metadata.organisation.url=http://junit.test +eidas.ms.pvp2.metadata.contact.givenname=Max +eidas.ms.pvp2.metadata.contact.surname=Mustermann +eidas.ms.pvp2.metadata.contact.email=max@junit.test +  ## Service Provider configuration  eidas.ms.sp.0.uniqueID=  eidas.ms.sp.0.pvp2.metadata.truststore=keys/junit.jks diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java index d52cdbb1..c28e753a 100644 --- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java @@ -67,6 +67,19 @@ public class MsEidasNodeConstants {    public static final String PROP_CONFIG_PVP2_METADATA_VALIDITY = PROP_CONFIG_PVP2_PREFIX        + "metadata.validity"; +  public static final String CONFIG_PROPS_METADATA_CONTACT_GIVENNAME = +      PROP_CONFIG_PVP2_PREFIX + "metadata.contact.givenname"; +  public static final String CONFIG_PROPS_METADATA_CONTACT_SURNAME = +      PROP_CONFIG_PVP2_PREFIX + "metadata.contact.surname"; +  public static final String CONFIG_PROPS_METADATA_CONTACT_EMAIL = +      PROP_CONFIG_PVP2_PREFIX + "metadata.contact.email"; +  public static final String CONFIG_PROPS_METADATA_ORGANISATION_NAME = +      PROP_CONFIG_PVP2_PREFIX + "metadata.organisation.name"; +  public static final String CONFIG_PROPS_METADATA_ORGANISATION_FRIENDLYNAME = +      PROP_CONFIG_PVP2_PREFIX + "metadata.organisation.friendyname"; +  public static final String CONFIG_PROPS_METADATA_ORGANISATION_URL = +      PROP_CONFIG_PVP2_PREFIX + "metadata.organisation.url"; +      // TODO: is not implemented yet    public static final String PROP_CONFIG_SP_VALIDATION_DISABLED =        "configuration.sp.disableRegistrationRequirement"; | 
