aboutsummaryrefslogtreecommitdiff
path: root/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EidasMetaDataRequest.java
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EidasMetaDataRequest.java')
-rw-r--r--id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EidasMetaDataRequest.java82
1 files changed, 53 insertions, 29 deletions
diff --git a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EidasMetaDataRequest.java b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EidasMetaDataRequest.java
index df96bef12..bfe410fc2 100644
--- a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EidasMetaDataRequest.java
+++ b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EidasMetaDataRequest.java
@@ -31,7 +31,7 @@ import org.springframework.stereotype.Service;
import at.gv.egovernment.moa.id.auth.modules.eidas.Constants;
import at.gv.egovernment.moa.id.auth.modules.eidas.engine.MOAeIDASChainingMetadataProvider;
import at.gv.egovernment.moa.id.auth.modules.eidas.exceptions.EIDASEngineException;
-import at.gv.egovernment.moa.id.auth.modules.eidas.utils.MOAeIDASMetadataGenerator;
+import at.gv.egovernment.moa.id.auth.modules.eidas.utils.NewMoaEidasMetadata;
import at.gv.egovernment.moa.id.auth.modules.eidas.utils.SAMLEngineUtils;
import at.gv.egovernment.moa.id.commons.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.commons.api.AuthConfiguration;
@@ -44,8 +44,10 @@ import at.gv.egovernment.moa.id.moduls.IAction;
import at.gv.egovernment.moa.id.protocols.pvp2x.config.PVPConfiguration;
import at.gv.egovernment.moa.logging.Logger;
import eu.eidas.auth.engine.ProtocolEngineI;
-import eu.eidas.auth.engine.metadata.Contact;
+import eu.eidas.auth.engine.metadata.ContactData;
import eu.eidas.auth.engine.metadata.MetadataConfigParams;
+import eu.eidas.auth.engine.metadata.MetadataConfigParams.Builder;
+import eu.eidas.auth.engine.metadata.OrganizationData;
import eu.eidas.engine.exceptions.EIDASSAMLEngineException;
@@ -119,22 +121,20 @@ public class EidasMetaDataRequest implements IAction {
ProtocolEngineI engine = SAMLEngineUtils.createSAMLEngine(eIDASMetadataProvider);
- MOAeIDASMetadataGenerator generator = new MOAeIDASMetadataGenerator();
- MetadataConfigParams mcp=new MetadataConfigParams();
- generator.setConfigParams(mcp);
- generator.initialize(engine);
-
- mcp.setEntityID(metadata_url);
- mcp.setAssertionConsumerUrl(sp_return_url);
- mcp.getProtocolBindingLocation().put(
+ //configura metadata builder
+ Builder metadataConfigBuilder = MetadataConfigParams.builder();
+ metadataConfigBuilder.entityID(metadata_url);
+ metadataConfigBuilder.assertionConsumerUrl(sp_return_url);
+
+ metadataConfigBuilder.addProtocolBindingLocation(
SAMLConstants.SAML2_POST_BINDING_URI,
pendingReq.getAuthURL() + Constants.eIDAS_HTTP_ENDPOINT_IDP_COLLEAGUEREQUEST);
//TODO: make it configurable
- mcp.setAuthnRequestsSigned(true);
- mcp.setWantAssertionsSigned(true);
- mcp.setAssuranceLevel(
+ metadataConfigBuilder.authnRequestsSigned(true);
+ metadataConfigBuilder.wantAssertionsSigned(true);
+ metadataConfigBuilder.assuranceLevel(
authConfig.getBasicMOAIDConfiguration(
Constants.CONIG_PROPS_EIDAS_NODE_LoA,
MOAIDAuthConstants.eIDAS_LOA_HIGH));
@@ -142,47 +142,71 @@ public class EidasMetaDataRequest implements IAction {
//must be set in request, because it could be different for every online-application
//mcp.setSpType(SPType.DEFAULT_VALUE);
- mcp.setDigestMethods(Constants.METADATA_ALLOWED_ALG_DIGIST);
- mcp.setSigningMethods(Constants.METADATA_ALLOWED_ALG_SIGN);
- mcp.setEncryptionAlgorithms(Constants.METADATA_ALLOWED_ALG_ENCRYPT);
+ metadataConfigBuilder.digestMethods(Constants.METADATA_ALLOWED_ALG_DIGIST);
+ metadataConfigBuilder.signingMethods(Constants.METADATA_ALLOWED_ALG_SIGN);
+ metadataConfigBuilder.encryptionAlgorithms(Constants.METADATA_ALLOWED_ALG_ENCRYPT);
//add organisation information from PVP metadata information
Organization pvpOrganisation = null;
try {
pvpOrganisation = PVPConfiguration.getInstance().getIDPOrganisation();
- Contact technicalContact = new Contact();
+ eu.eidas.auth.engine.metadata.ContactData.Builder technicalContact = ContactData.builder();
List<ContactPerson> contacts = PVPConfiguration.getInstance().getIDPContacts();
if (contacts != null && contacts.size() >= 1) {
ContactPerson contact = contacts.get(0);
- technicalContact.setGivenName(contact.getGivenName().getName());
- technicalContact.setSurName(contact.getSurName().getName());
+ technicalContact.givenName(contact.getGivenName().getName());
+ technicalContact.surName(contact.getSurName().getName());
if (!contact.getEmailAddresses().isEmpty())
- technicalContact.setEmail(contact.getEmailAddresses().get(0).getAddress());
+ technicalContact.email(contact.getEmailAddresses().get(0).getAddress());
if (!contact.getTelephoneNumbers().isEmpty())
- technicalContact.setPhone(contact.getTelephoneNumbers().get(0).getNumber());
+ technicalContact.phone(contact.getTelephoneNumbers().get(0).getNumber());
- mcp.setTechnicalContact(technicalContact );
+
}
if (pvpOrganisation != null) {
- mcp.setNodeUrl(pvpOrganisation.getURLs().get(0).getURL().getLocalString());
- mcp.setCountryName(authConfig.getBasicMOAIDConfiguration(Constants.CONIG_PROPS_EIDAS_NODE_COUNTRY, "Austria"));
- technicalContact.setCompany(pvpOrganisation.getDisplayNames().get(0).getName().getLocalString());
+ eu.eidas.auth.engine.metadata.OrganizationData.Builder organizationConfig = OrganizationData.builder();
+ organizationConfig.url(pvpOrganisation.getURLs().get(0).getURL().getLocalString());
+ organizationConfig.name(authConfig.getBasicMOAIDConfiguration(Constants.CONIG_PROPS_EIDAS_NODE_COUNTRY, "Austria"));
+ //TODO: add display name and maybe update name
+
+
+ metadataConfigBuilder.organization(organizationConfig.build());
+
+ technicalContact.company(pvpOrganisation.getDisplayNames().get(0).getName().getLocalString());
}
+
+ metadataConfigBuilder.technicalContact(technicalContact.build());
+
+ //TODO: add correct support contact
+ metadataConfigBuilder.supportContact(ContactData.builder(technicalContact.build()).build());
+
} catch (ConfigurationException | NullPointerException e) {
Logger.warn("Can not load Organisation or Contact from Configuration", e);
}
-
- generator.addSPRole();
- generator.addIDPRole();
+
+ metadataConfigBuilder.idpEngine(engine);
+ metadataConfigBuilder.spEngine(engine);
+
+ //TODO:
+// MOAeIDASMetadataGenerator generator = new MOAeIDASMetadataGenerator();
+// generator.initialize(engine);
+// generator.addSPRole();
+// generator.addIDPRole();
+// metadata = generator.generateMetadata();
+
+ //use own implementation that solves some problems in original implementation
+ NewMoaEidasMetadata.Generator generator = NewMoaEidasMetadata.generator();
+ generator.configParams(metadataConfigBuilder.build());
+ NewMoaEidasMetadata eidasMetadata = generator.build();
+ metadata = eidasMetadata.getMetadata();
- metadata = generator.generateMetadata();
return metadata;
}
}