From cbf1d0408519d0763a1a87b733c16a1ba5d022ba Mon Sep 17 00:00:00 2001 From: Thomas <> Date: Wed, 7 Jul 2021 09:31:43 +0200 Subject: add HTML template for additional eID information --- basicConfig/templates/other_login_method.html | 218 ++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 basicConfig/templates/other_login_method.html (limited to 'basicConfig/templates/other_login_method.html') diff --git a/basicConfig/templates/other_login_method.html b/basicConfig/templates/other_login_method.html new file mode 100644 index 00000000..1e2fb8f3 --- /dev/null +++ b/basicConfig/templates/other_login_method.html @@ -0,0 +1,218 @@ + + + + + + + eIDAS-Login Länderauswahl + + + + +
+
+
+ + +

Bundesministerium für Inneres

+
+
+ +
+
+
+
+

Zentraler eIDAS Knoten der Republik Österreich

+

Betrieben durch das Bundesministerium für Inneres

+
+ +

Zuordnung Ihrer Anmeldeinformationen

+ +

Ihre Anmeldeinformationen konnten nicht eindeutig in das österreichische eID System integriert werden. + Für eine eindeutig Integration sind weitere Informationen erforderlich.

+ + +
+
+ + + +
+ + + + +
+ + + +
+
+ + + +
+ + + +
+ + +

Information zur Anmeldung über Europäische eIDs

+

+ first part + Bundesministerium für Inneres + second part +

+ +

+ third part + eIDAS-Verordnung der Europäischen Union + fourth part +

+ +

fived part + + sixed part +

+ +
+ + + -- cgit v1.2.3 From 09af792ce3ed3df430f8d7ae6099f284756147a0 Mon Sep 17 00:00:00 2001 From: Christian Kollmann Date: Mon, 12 Jul 2021 11:00:48 +0200 Subject: Add option to provide alternative eIDAS login for matching process --- basicConfig/templates/other_login_method.html | 5 +- .../specific/modules/auth/eidas/v2/Constants.java | 38 ++-- .../auth/eidas/v2/tasks/AlternativeSearchTask.java | 214 +++++++++++++++++++++ .../eidas/v2/tasks/GenerateAuthnRequestTask.java | 1 - .../auth/eidas/v2/tasks/InitialSearchTask.java | 22 +-- .../tasks/ReceiveAuthnResponseAlternativeTask.java | 131 +++++++++++++ .../eidas/v2/tasks/ReceiveAuthnResponseTask.java | 1 - .../resources/eIDAS.Authentication.process.xml | 38 ++-- .../src/main/resources/eidas_v2_auth.beans.xml | 11 +- 9 files changed, 413 insertions(+), 48 deletions(-) create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseAlternativeTask.java (limited to 'basicConfig/templates/other_login_method.html') diff --git a/basicConfig/templates/other_login_method.html b/basicConfig/templates/other_login_method.html index 1e2fb8f3..035c359f 100644 --- a/basicConfig/templates/other_login_method.html +++ b/basicConfig/templates/other_login_method.html @@ -167,12 +167,11 @@ form { - - +
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java index 5edde8a4..70bade43 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java @@ -29,7 +29,7 @@ public class Constants { //TODO: should we make it configurable? public static final String MATCHING_INTERNAL_BPK_TARGET = EaafConstants.URN_PREFIX_CDID + "ZP"; - + public static final String ERRORCODE_00 = "module.eidasauth.00"; public static final String DATA_REQUESTERID = "req_requesterId"; @@ -37,6 +37,7 @@ public class Constants { public static final String DATA_REQUESTED_LOA_LIST = "req_requestedLoA"; public static final String DATA_REQUESTED_LOA_COMPERISON = "req_requestedLoAComperision"; public static final String DATA_FULL_EIDAS_RESPONSE = "resp_fulleIDASResponse"; + public static final String DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE = "resp_fulleIDASResponseAlternative"; /** * Stored when one match from register was found. @@ -115,7 +116,7 @@ public class Constants { public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYS_ALIAS = CONIG_PROPS_EIDAS_ZMRCLIENT + ".ssl.key.alias"; public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEY_PASSWORD = CONIG_PROPS_EIDAS_ZMRCLIENT - + ".ssl.key.password"; + + ".ssl.key.password"; public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_TRUSTSTORE_PATH = CONIG_PROPS_EIDAS_ZMRCLIENT + ".ssl.trustStore.path"; public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_TRUSTSTORE_PASSWORD = CONIG_PROPS_EIDAS_ZMRCLIENT @@ -124,15 +125,15 @@ public class Constants { + ".ssl.trustStore.type"; public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_TRUSTSTORE_NAME = CONIG_PROPS_EIDAS_ZMRCLIENT + ".ssl.trustStore.name"; - + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_REQ_ORGANIZATION_NR = CONIG_PROPS_EIDAS_ZMRCLIENT + ".req.organisation.behoerdennr"; public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_REQ_UPDATE_REASON_CODE = CONIG_PROPS_EIDAS_ZMRCLIENT + ".req.update.reason.code"; public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_REQ_UPDATE_REASON_TEXT = CONIG_PROPS_EIDAS_ZMRCLIENT + ".req.update.reason.text"; - - + + // SZR Client configuration properties public static final String CONIG_PROPS_EIDAS_SZRCLIENT = CONIG_PROPS_EIDAS_PREFIX + ".szrclient"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_USETESTSERVICE = CONIG_PROPS_EIDAS_SZRCLIENT @@ -162,7 +163,7 @@ public class Constants { public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYS_ALIAS = CONIG_PROPS_EIDAS_SZRCLIENT + ".ssl.key.alias"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEY_PASSWORD = CONIG_PROPS_EIDAS_SZRCLIENT - + ".ssl.key.password"; + + ".ssl.key.password"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_PATH = CONIG_PROPS_EIDAS_SZRCLIENT + ".ssl.trustStore.path"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_PASSWORD = CONIG_PROPS_EIDAS_SZRCLIENT @@ -171,7 +172,7 @@ public class Constants { + ".ssl.trustStore.type"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_NAME = CONIG_PROPS_EIDAS_SZRCLIENT + ".ssl.trustStore.name"; - + public static final String CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_EDOCUMENTTYPE = CONIG_PROPS_EIDAS_SZRCLIENT + ".params.documenttype"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_VKZ = CONIG_PROPS_EIDAS_SZRCLIENT @@ -208,7 +209,7 @@ public class Constants { // eIDAS request parameters public static final String eIDAS_REQ_NAMEID_FORMAT = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"; - // eIDAS attribute names + // eIDAS attribute names public static final String eIDAS_ATTR_PERSONALIDENTIFIER = "PersonIdentifier"; public static final String eIDAS_ATTR_DATEOFBIRTH = "DateOfBirth"; public static final String eIDAS_ATTR_CURRENTGIVENNAME = "FirstName"; @@ -221,19 +222,19 @@ public class Constants { public static final String eIDAS_ATTR_LEGALPERSONIDENTIFIER = "LegalPersonIdentifier"; public static final String eIDAS_ATTR_LEGALNAME = "LegalName"; - + //eIDAS attribute URN public static final String eIDAS_ATTRURN_PREFIX = "http://eidas.europa.eu/attributes/"; public static final String eIDAS_ATTRURN_PREFIX_NATURAL = eIDAS_ATTRURN_PREFIX + "naturalperson/"; - - public static final String eIDAS_ATTRURN_PERSONALIDENTIFIER = + + public static final String eIDAS_ATTRURN_PERSONALIDENTIFIER = eIDAS_ATTRURN_PREFIX_NATURAL + eIDAS_ATTR_PERSONALIDENTIFIER; - public static final String eIDAS_ATTRURN_PLACEOFBIRTH = + public static final String eIDAS_ATTRURN_PLACEOFBIRTH = eIDAS_ATTRURN_PREFIX_NATURAL + eIDAS_ATTR_PLACEOFBIRTH; - public static final String eIDAS_ATTRURN_BIRTHNAME = + public static final String eIDAS_ATTRURN_BIRTHNAME = eIDAS_ATTRURN_PREFIX_NATURAL + eIDAS_ATTR_BIRTHNAME; - - + + public static final String eIDAS_REQ_PARAM_SECTOR_PUBLIC = "public"; public static final String eIDAS_REQ_PARAM_SECTOR_PRIVATE = "private"; @@ -292,9 +293,12 @@ public class Constants { "TASK_GenerateMobilePhoneSignatureRequestTask"; /** - * TODO Second eidas login. + * {@link at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateAuthnRequestTask}. */ - public static final String TRANSITION_TO_GENERATE_EIDAS_LOGIN = "TASK_TODO"; + public static final String TRANSITION_TO_GENERATE_EIDAS_LOGIN = "TASK_GenerateAlternativeEidasAuthn"; + /** + * Stores login selection from user. + */ public static final String REQ_SELECTED_LOGIN_METHOD_PARAMETER = "loginSelection"; } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java new file mode 100644 index 00000000..fe3a9560 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java @@ -0,0 +1,214 @@ +/* + * Copyright 2020 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.modules.auth.eidas.v2.tasks; + +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MatchedPersonResult; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterOperationStatus; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterStatusResults; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; +import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; +import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; +import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; +import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import eu.eidas.auth.commons.attribute.AttributeDefinition; +import eu.eidas.auth.commons.attribute.AttributeValue; +import eu.eidas.auth.commons.light.ILightResponse; +import eu.eidas.auth.commons.protocol.eidas.impl.PostalAddress; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; +import org.joda.time.DateTime; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK; +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK; + +/** + * Searches registers (ERnP and ZMR) after alternative eIDAS authn, before adding person to SZR. + * Input: + * + * Output: + * + * Transitions: + * + * + * @author amarsalek + * @author ckollmann + * @author tlenz + */ +@Slf4j +@Component("AlternativeSearchTask") +@SuppressWarnings("PMD.TooManyStaticImports") +public class AlternativeSearchTask extends AbstractAuthServletTask { + + private final RegisterSearchService registerSearchService; + private final ICcSpecificEidProcessingService eidPostProcessor; + + /** + * Constructor. + * + * @param registerSearchService Service for register search access + * @param eidPostProcessor Country-Specific post processing of attributes + */ + public AlternativeSearchTask(RegisterSearchService registerSearchService, + ICcSpecificEidProcessingService eidPostProcessor) { + this.registerSearchService = registerSearchService; + this.eidPostProcessor = eidPostProcessor; + } + + @Override + public void execute(ExecutionContext executionContext, HttpServletRequest request, HttpServletResponse response) + throws TaskExecutionException { + try { + final SimpleEidasData eidasData = convertEidasAttrToSimpleData(); + step11RegisterSearchWithPersonIdentifier(executionContext, eidasData); + } catch (WorkflowException e) { + throw new TaskExecutionException(pendingReq, "Initial search failed", e); + } catch (final Exception e) { + log.error("Initial search failed", e); + throw new TaskExecutionException(pendingReq, "Initial search failed with a generic error", e); + } + } + + private void step11RegisterSearchWithPersonIdentifier( + ExecutionContext executionContext, SimpleEidasData eidasData) throws WorkflowException, EaafStorageException { + try { + log.trace("Starting step11RegisterSearchWithPersonIdentifier"); + RegisterStatusResults searchResult = registerSearchService.searchWithPersonIdentifier(eidasData); + int resultCount = searchResult.getResultCount(); + if (resultCount == 0) { + step12CountrySpecificSearch(executionContext, searchResult.getOperationStatus(), eidasData); + } else if (resultCount == 1) { + foundMatchFinalizeTask(searchResult, eidasData); + } else { + throw new WorkflowException("step11RegisterSearchWithPersonIdentifier", + "More than one entry with unique personal-identifier", true); + } + } catch (WorkflowException e) { + //TODO: what we do in case of a workflow error and manual matching are necessary?? + log.warn("Workflow error during matching step: {}. Reason: {}", e.getProcessStepName(), e.getErrorReason()); + throw e; + } + } + + private void step12CountrySpecificSearch( + ExecutionContext executionContext, RegisterOperationStatus registerOperationStatus, SimpleEidasData eidasData) + throws EaafStorageException, WorkflowException { + log.trace("Starting 'step12CountrySpecificSearch' ... "); + RegisterStatusResults searchResult = registerSearchService.searchWithCountrySpecifics( + registerOperationStatus, eidasData); + if (searchResult.getResultCount() == 0) { + log.trace("'step12CountrySpecificSearch' ends with no result. Forward to GUI based matching step ... "); + log.debug("Forward to GUI based matching steps ... "); + executionContext.put(TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK, true); + } else if (searchResult.getResultCount() == 1) { + log.trace("'step12CountrySpecificSearch' finds a person. Forward to 'step7aKittProcess' step ... "); + // TODO is step 7b kitt different from step 7a? + registerSearchService.step7aKittProcess(searchResult, eidasData); + foundMatchFinalizeTask(searchResult, eidasData); + } else { + throw new WorkflowException("step12CountrySpecificSearch", + "More than one entry with unique country-specific information", true); + } + } + + private void foundMatchFinalizeTask(RegisterStatusResults searchResult, SimpleEidasData eidasData) + throws WorkflowException, EaafStorageException { + MatchedPersonResult result = MatchedPersonResult.generateFormMatchingResult( + searchResult.getResult(), eidasData.getCitizenCountryCode()); + MatchingTaskUtils.storeFinalMatchingResult(pendingReq, result); + } + + @NotNull + private SimpleEidasData convertEidasAttrToSimpleData() + throws EidasAttributeException, EidPostProcessingException { + final ILightResponse eidasResponse = MatchingTaskUtils.getAuthProcessDataWrapper(pendingReq) + .getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE, ILightResponse.class); + Map simpleMap = convertEidasAttrToSimpleMap(eidasResponse.getAttributes().getAttributeMap()); + return eidPostProcessor.postProcess(simpleMap); + } + + private Map convertEidasAttrToSimpleMap( + ImmutableMap, ImmutableSet>> attributeMap) { + final Map result = new HashMap<>(); + for (final AttributeDefinition el : attributeMap.keySet()) { + final Class parameterizedType = el.getParameterizedType(); + if (DateTime.class.equals(parameterizedType)) { + final DateTime attribute = EidasResponseUtils.translateDateAttribute(el, attributeMap.get(el).asList()); + if (attribute != null) { + result.put(el.getFriendlyName(), attribute); + log.trace("Find attr '{}' with value: {}", el.getFriendlyName(), attribute); + } else { + log.info("Ignore empty 'DateTime' attribute"); + } + } else if (PostalAddress.class.equals(parameterizedType)) { + final PostalAddress addressAttribute = EidasResponseUtils + .translateAddressAttribute(el, attributeMap.get(el).asList()); + if (addressAttribute != null) { + result.put(el.getFriendlyName(), addressAttribute); + log.trace("Find attr '{}' with value: {}", el.getFriendlyName(), addressAttribute); + } else { + log.info("Ignore empty 'PostalAddress' attribute"); + } + } else { + final List natPersonIdObj = EidasResponseUtils.translateStringListAttribute(el, attributeMap.get(el)); + final String stringAttr = natPersonIdObj.get(0); + if (StringUtils.isNotEmpty(stringAttr)) { + result.put(el.getFriendlyName(), stringAttr); + log.trace("Find attr '{}' with value: {}", el.getFriendlyName(), stringAttr); + } else { + log.info("Ignore empty 'String' attribute"); + } + } + } + log.debug("Receive #{} attributes with names: {}", result.size(), result.keySet()); + return result; + } + +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java index 33d3f175..da9c8174 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java @@ -64,7 +64,6 @@ import java.util.UUID; /** * Generates the authn request to the eIDAS Node. This is the first task in the process. - *

* Input: *

    *
  • none
  • diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java index 4103939d..a55af1c4 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java @@ -62,7 +62,7 @@ import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.TRANSIT import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK; /** - * Task that searches registers (ERnP and ZMR) before adding person to SZR. + * Searches registers (ERnP and ZMR) after initial user auth, before adding person to SZR. * Input: *
      *
    • {@link Constants#DATA_FULL_EIDAS_RESPONSE}
    • @@ -126,12 +126,12 @@ public class InitialSearchTask extends AbstractAuthServletTask { ExecutionContext executionContext, SimpleEidasData eidasData) throws WorkflowException, EaafStorageException { try { log.trace("Starting step2RegisterSearchWithPersonIdentifier"); - RegisterStatusResults initialSearchResult = registerSearchService.searchWithPersonIdentifier(eidasData); - int resultCount = initialSearchResult.getResultCount(); + RegisterStatusResults searchResult = registerSearchService.searchWithPersonIdentifier(eidasData); + int resultCount = searchResult.getResultCount(); if (resultCount == 0) { - step6CountrySpecificSearch(executionContext, initialSearchResult.getOperationStatus(), eidasData); + step6CountrySpecificSearch(executionContext, searchResult.getOperationStatus(), eidasData); } else if (resultCount == 1) { - foundMatchFinalizeTask(initialSearchResult, eidasData); + foundMatchFinalizeTask(searchResult, eidasData); } else { throw new WorkflowException("step2RegisterSearchWithPersonIdentifier", "More than one entry with unique personal-identifier", true); @@ -147,15 +147,15 @@ public class InitialSearchTask extends AbstractAuthServletTask { ExecutionContext executionContext, RegisterOperationStatus registerOperationStatus, SimpleEidasData eidasData) throws EaafStorageException, WorkflowException { log.trace("Starting 'step6CountrySpecificSearch' ... "); - RegisterStatusResults countrySpecificResult = registerSearchService.searchWithCountrySpecifics( + RegisterStatusResults searchResult = registerSearchService.searchWithCountrySpecifics( registerOperationStatus, eidasData); - if (countrySpecificResult.getResultCount() == 0) { + if (searchResult.getResultCount() == 0) { log.trace("'step6CountrySpecificSearch' ends with no result. Forward to next matching step ... "); - step8RegisterSearchWithMds(executionContext, countrySpecificResult.getOperationStatus(), eidasData); - } else if (countrySpecificResult.getResultCount() == 1) { + step8RegisterSearchWithMds(executionContext, searchResult.getOperationStatus(), eidasData); + } else if (searchResult.getResultCount() == 1) { log.trace("'step6CountrySpecificSearch' finds a person. Forward to 'step7aKittProcess' step ... "); - registerSearchService.step7aKittProcess(countrySpecificResult, eidasData); - foundMatchFinalizeTask(countrySpecificResult, eidasData); + registerSearchService.step7aKittProcess(searchResult, eidasData); + foundMatchFinalizeTask(searchResult, eidasData); } else { throw new WorkflowException("step6CountrySpecificSearch", "More than one entry with unique country-specific information", true); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseAlternativeTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseAlternativeTask.java new file mode 100644 index 00000000..aa04f55e --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseAlternativeTask.java @@ -0,0 +1,131 @@ +/* + * 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.modules.auth.eidas.v2.tasks; + +import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasValidationException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.validator.EidasResponseValidator; +import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; +import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; +import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; +import eu.eidas.auth.commons.light.ILightResponse; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +/** + * Receives the authn response from the eIDAS Node, containing the (alternative) eIDAS authentication. + * Input: + *
        + *
      • none
      • + *
      + * Output: + *
        + *
      • {@link Constants#DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE} the full response details
      • + *
      + * Transitions: + *
        + *
      • {@link InitialSearchTask} to perform search in registers
      • + *
      + * + * @author tlenz + * @author ckollmann + */ +@Slf4j +@Component("ReceiveAuthnResponseTask") +public class ReceiveAuthnResponseAlternativeTask extends AbstractAuthServletTask { + + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") + @Autowired + private IConfiguration basicConfig; + + @Autowired + private EidasAttributeRegistry attrRegistry; + + @Override + public void execute(ExecutionContext executionContext, HttpServletRequest request, + HttpServletResponse response) throws TaskExecutionException { + try { + final ILightResponse eidasResponse = extractEidasResponse(request); + checkStatusCode(eidasResponse); + validateMsSpecificResponse(executionContext, eidasResponse); + storeInSession(eidasResponse); + } catch (final Exception e) { + log.warn("eIDAS Response processing FAILED.", e); + throw new TaskExecutionException(pendingReq, e.getMessage(), + new EidasSAuthenticationException("eidas.05", new Object[]{e.getMessage()}, e)); + } + } + + @NotNull + private ILightResponse extractEidasResponse(HttpServletRequest request) throws EidasSAuthenticationException { + final ILightResponse eidasResponse = (ILightResponse) request.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE); + if (eidasResponse == null) { + log.warn("NO eIDAS response-message found."); + throw new EidasSAuthenticationException("eidas.01", null); + } + log.debug("Receive eIDAS response with RespId: {} for ReqId: {}", + eidasResponse.getId(), eidasResponse.getInResponseToId()); + log.trace("Full eIDAS-Resp: {}", eidasResponse); + return eidasResponse; + } + + private void checkStatusCode(ILightResponse eidasResponse) throws EidasSAuthenticationException { + if (!eidasResponse.getStatus().getStatusCode().equals(Constants.SUCCESS_URI)) { + log.info("Receive eIDAS Response with StatusCode: {} Subcode: {} Msg: {}", + eidasResponse.getStatus().getStatusCode(), + eidasResponse.getStatus().getSubStatusCode(), + eidasResponse.getStatus().getStatusMessage()); + throw new EidasSAuthenticationException("eidas.02", new Object[]{eidasResponse.getStatus() + .getStatusCode(), eidasResponse.getStatus().getStatusMessage()}); + } + } + + private void validateMsSpecificResponse(ExecutionContext executionContext, ILightResponse eidasResponse) + throws EidasValidationException { + final String spCountry = basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_NODE_COUNTRYCODE, "AT"); + final String citizenCountryCode = (String) executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY); + EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry); + } + + private void storeInSession(ILightResponse eidasResponse) throws EaafException { + log.debug("Store eIDAS response information into pending-request."); + final AuthProcessDataWrapper authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class); + authProcessData.setQaaLevel(eidasResponse.getLevelOfAssurance()); + authProcessData.setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE, eidasResponse); + requestStoreage.storePendingRequest(pendingReq); + } + +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java index dcc1b7d5..ae582e91 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java @@ -48,7 +48,6 @@ import javax.servlet.http.HttpServletResponse; /** * Receives the authn response from the eIDAS Node, containing the (initial) eIDAS authentication. - *

      * Input: *

        *
      • none
      • diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml index e20fd7aa..2a8a0141 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml @@ -17,6 +17,9 @@ + + + @@ -24,26 +27,35 @@ - - + + - - - - - - - + + + + + + + + + - + - - - + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml index 09e0234d..5a113550 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml @@ -100,8 +100,12 @@ scope="prototype" /> + class="at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAuthnResponseTask" + scope="prototype" /> + + + Date: Tue, 16 Nov 2021 15:02:30 +0100 Subject: update 'advanced matching steps' tasks to optimize user handling between 'ID Austria Login', 'alternative eIDAS Login', and 'address search' --- basicConfig/properties/messages.properties | 4 ++ basicConfig/properties/messages_de.properties | 11 +++++ basicConfig/templates/other_login_method.html | 10 ++++ .../GenerateCountrySelectionFrameTaskTest.java | 1 + eidas_modules/authmodule-eIDAS-v2/pom.xml | 1 + .../specific/modules/auth/eidas/v2/Constants.java | 9 ++++ .../auth/eidas/v2/dao/SelectedLoginMethod.java | 2 +- .../v2/tasks/GenerateOtherLoginMethodGuiTask.java | 21 ++++++++- .../ReceiveOtherLoginMethodGuiResponseTask.java | 5 ++ .../resources/eIDAS.Authentication.process.xml | 23 +++++++--- .../tasks/GenerateOtherLoginMethodGuiTaskTest.java | 53 +++++++++++++++++++++- ...ReceiveOtherLoginMethodGuiResponseTaskTest.java | 31 +++++++++---- 12 files changed, 152 insertions(+), 19 deletions(-) (limited to 'basicConfig/templates/other_login_method.html') diff --git a/basicConfig/properties/messages.properties b/basicConfig/properties/messages.properties index 3ea204dd..eae15865 100644 --- a/basicConfig/properties/messages.properties +++ b/basicConfig/properties/messages.properties @@ -36,6 +36,10 @@ gui.matching.otherloginmethod.info.text=Your login information could not be clea gui.matching.otherloginmethod.ida=You have an ID Austria gui.matching.otherloginmethod.eidas=You can provide additional information via eIDAS gui.matching.otherloginmethod.residence=Have you ever lived in Austria? +gui.matching.otherloginmethod.addmeasnew=Add me as new entity in Austrian eID system + +gui.matching.otherloginmethod.error.title=Matching of further information failed: +gui.matching.otherloginmethod.error.msg=No identity match with additional information. Use another option or provide more information. gui.countryselection.country.be=Belgium diff --git a/basicConfig/properties/messages_de.properties b/basicConfig/properties/messages_de.properties index 41ef2551..a35b9d2c 100644 --- a/basicConfig/properties/messages_de.properties +++ b/basicConfig/properties/messages_de.properties @@ -32,6 +32,17 @@ gui.countryselection.infos.general.part.5=Nachdem Sie auf dieser Seite einen Mit gui.countryselection.infos.general.part.6=eingetragen. Damit wird sichergestellt, dass Sie auch im Rahmen zukünftiger Anmeldeprozesse zu österreichischen Online-Anwendungen erfolgreich und eindeutig identifiziert werden können. +gui.matching.otherloginmethod.header=Assignment of your login information +gui.matching.otherloginmethod.info.text=Ihre Identität konnte nicht eindeutig in das österreichische eID System integriert werden. Für eine eindeutige Integration werden weitere Informationen benötigt. +gui.matching.otherloginmethod.ida=Sie besitzen einen ID Austria +gui.matching.otherloginmethod.eidas=Sie können weitere Attribute via eIDAS bereitstellen +gui.matching.otherloginmethod.residence=Sie haben bereits einmal in Österreichg gelebt? +gui.matching.otherloginmethod.addmeasnew=Neuregistrierung im österreichischen eID System + +gui.matching.otherloginmethod.error.title=Erweitertes Personenmatching fehlgeschlagen: +gui.matching.otherloginmethod.error.msg=Ihre Identität konnte nicht eindeutig zugeordnet werden. Wählen Sie eine andere Option oder stellen zusätzliche Informationen bereit. + + gui.countryselection.country.be=Belgien gui.countryselection.country.be.logo.alt=Belgische-eID gui.countryselection.country.hr=Kroatien diff --git a/basicConfig/templates/other_login_method.html b/basicConfig/templates/other_login_method.html index 035c359f..fffe3930 100644 --- a/basicConfig/templates/other_login_method.html +++ b/basicConfig/templates/other_login_method.html @@ -160,6 +160,10 @@ form { Für eine eindeutig Integration sind weitere Informationen erforderlich.

        +
        + Info

        +
        +
        @@ -178,6 +182,12 @@ form { + +
        + + + +
        diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java index d902f758..49d7acf4 100644 --- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java @@ -52,6 +52,7 @@ public class GenerateCountrySelectionFrameTaskTest { public static void classInitializer() { final String current = new java.io.File(".").toURI().toString(); System.setProperty("eidas.ms.configuration", current + "src/test/resources/config/junit_config_1.properties"); + Locale.setDefault(Locale.ENGLISH); } diff --git a/eidas_modules/authmodule-eIDAS-v2/pom.xml b/eidas_modules/authmodule-eIDAS-v2/pom.xml index a695d21a..6b5469a1 100644 --- a/eidas_modules/authmodule-eIDAS-v2/pom.xml +++ b/eidas_modules/authmodule-eIDAS-v2/pom.xml @@ -341,6 +341,7 @@ **/org/w3/_2001/_04/* **/szrservices/* **/generated/cxf/* + **at/gv/bmi/namespace/* diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java index 5dfc9e68..ee9b00f7 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java @@ -279,6 +279,14 @@ public class Constants { public static final String COUNTRY_CODE_DE = "DE"; public static final String COUNTRY_CODE_IT = "IT"; + + // UI options + public static final String HTML_FORM_ADVANCED_MATCHING_FAILED = "advancedMatchingFailed"; + + + // ProcessEngine context + public static final String CONTEXT_FLAG_ADVANCED_MATCHING_FAILED = HTML_FORM_ADVANCED_MATCHING_FAILED; + /** * {@link at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateNewErnpEntryTask}. */ @@ -307,6 +315,7 @@ public class Constants { */ public static final String TRANSITION_TO_GENERATE_EIDAS_LOGIN = "TASK_GenerateAlternativeEidasAuthn"; + /** * Stores login selection from user. */ diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SelectedLoginMethod.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SelectedLoginMethod.java index f8e2ff2e..70904e4f 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SelectedLoginMethod.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SelectedLoginMethod.java @@ -1,5 +1,5 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.dao; public enum SelectedLoginMethod { - EIDAS_LOGIN, MOBILE_PHONE_SIGNATURE_LOGIN, NO_OTHER_LOGIN + EIDAS_LOGIN, MOBILE_PHONE_SIGNATURE_LOGIN, NO_OTHER_LOGIN, ADD_ME_AS_NEW } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateOtherLoginMethodGuiTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateOtherLoginMethodGuiTask.java index dbdda78e..7107709f 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateOtherLoginMethodGuiTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateOtherLoginMethodGuiTask.java @@ -23,6 +23,8 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks; +import java.io.Serializable; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -31,11 +33,12 @@ import org.springframework.stereotype.Component; import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; import at.asitplus.eidas.specific.connector.gui.StaticGuiBuilderConfiguration; -import at.gv.egiz.eaaf.core.api.gui.IGuiBuilderConfiguration; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.gv.egiz.eaaf.core.api.gui.ISpringMvcGuiFormBuilder; import at.gv.egiz.eaaf.core.api.idp.IConfiguration; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; +import at.gv.egiz.eaaf.core.impl.gui.AbstractGuiFormBuilderConfiguration; import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; import lombok.extern.slf4j.Slf4j; @@ -62,7 +65,7 @@ public class GenerateOtherLoginMethodGuiTask extends AbstractAuthServletTask { public void execute(ExecutionContext executionContext, HttpServletRequest request, HttpServletResponse response) throws TaskExecutionException { try { - final IGuiBuilderConfiguration config = new StaticGuiBuilderConfiguration( + final StaticGuiBuilderConfiguration config = new StaticGuiBuilderConfiguration( basicConfig, pendingReq, basicConfig.getBasicConfiguration( @@ -71,6 +74,13 @@ public class GenerateOtherLoginMethodGuiTask extends AbstractAuthServletTask { MsEidasNodeConstants.ENDPOINT_OTHER_LOGIN_METHOD_SELECTION, resourceLoader); + // inject flag to indicate advanced matching error + if (getExecutionContextFlag(executionContext, Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED)) { + config.putCustomParameter(AbstractGuiFormBuilderConfiguration.PARAM_GROUP_UIOPTIONS, + Constants.HTML_FORM_ADVANCED_MATCHING_FAILED, String.valueOf(true)); + + } + guiBuilder.build(request, response, config, "Other login methods selection form"); } catch (final Exception e) { @@ -79,4 +89,11 @@ public class GenerateOtherLoginMethodGuiTask extends AbstractAuthServletTask { } } + private boolean getExecutionContextFlag(ExecutionContext executionContext, String key) { + Serializable value = executionContext.get(key); + return value instanceof Boolean && (boolean)value + || value instanceof String && Boolean.parseBoolean((String) value); + + } + } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveOtherLoginMethodGuiResponseTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveOtherLoginMethodGuiResponseTask.java index 8431d968..c2c1a351 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveOtherLoginMethodGuiResponseTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveOtherLoginMethodGuiResponseTask.java @@ -70,6 +70,7 @@ public class ReceiveOtherLoginMethodGuiResponseTask extends AbstractLocaleAuthSe try { SelectedLoginMethod selection = SelectedLoginMethod.valueOf(extractUserSelection(request)); executionContext.put(Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER, selection); + executionContext.remove(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED); transitionToNextTask(executionContext, selection); } catch (final IllegalArgumentException e) { @@ -113,6 +114,10 @@ public class ReceiveOtherLoginMethodGuiResponseTask extends AbstractLocaleAuthSe executionContext.put(Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK, true); return; + case ADD_ME_AS_NEW: + executionContext.put(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK, true); + return; + default: throw new InvalidUserInputException("module.eidasauth.matching.98"); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml index 59aef423..c9bdad94 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml @@ -33,6 +33,7 @@ from="initialRegisterSearch" to="generateOtherLoginMethodGuiTask"/> + @@ -40,25 +41,35 @@ from="receiveOtherLoginMethodGuiResponseTask" to="generateMobilePhoneSignatureRequestTask" /> + + - + + from="alternativeRegisterSearch" to="generateOtherLoginMethodGuiTask" /> + + + from="receiveMobilePhoneSignatureResponseTask" to="generateOtherLoginMethodGuiTask" /> - + + + + + from="receiveAustrianResidenceGuiResponseTask" to="createNewErnpEntryTask" /> + - + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java index eed0d53d..7c4f8a41 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java @@ -1,5 +1,8 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import java.io.UnsupportedEncodingException; import java.text.MessageFormat; import java.util.Locale; @@ -20,11 +23,17 @@ import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.json.JsonMapper; + +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SelectedLoginMethod; import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateOtherLoginMethodGuiTask; import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; +import lombok.SneakyThrows; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { @@ -38,6 +47,8 @@ public class GenerateOtherLoginMethodGuiTaskTest { private static final String TEST_PATTER_REQ_PARAM = ""; + private static ObjectMapper mapper = new ObjectMapper(); + @Autowired GenerateOtherLoginMethodGuiTask task; private ExecutionContextImpl executionContext = new ExecutionContextImpl(); @@ -69,9 +80,47 @@ public class GenerateOtherLoginMethodGuiTaskTest { LocaleContextHolder.resetLocaleContext(); } + @Test - public void validHtmlResponseWithOutLocale() throws TaskExecutionException, UnsupportedEncodingException { + @SneakyThrows + public void jsonResponse() throws TaskExecutionException, UnsupportedEncodingException { + + executionContext.put(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED, true); + httpReq.addHeader("Accept", "application/json"); + + task.execute(pendingReq, executionContext); + + //result validation + Assert.assertEquals("httpStausCode", 200, httpResp.getStatus()); + Assert.assertEquals("http ContentType", "application/json;charset=UTF-8", httpResp.getContentType()); + final String content = httpResp.getContentAsString(); + assertNotNull("response body is null", content); + Assert.assertFalse("response body is empty", content.isEmpty()); + final JsonNode json = new JsonMapper().readTree(content); + assertNotNull("response body is null", json); + assertNotNull("advancedMatchFailed", json.get(Constants.HTML_FORM_ADVANCED_MATCHING_FAILED)); + assertTrue("advancedMatchFailed", json.get(Constants.HTML_FORM_ADVANCED_MATCHING_FAILED).asBoolean()); + + } + + @Test + public void advancedMatchingFailedMsg() throws TaskExecutionException, UnsupportedEncodingException { + + executionContext.put(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED, true); + + task.execute(pendingReq, executionContext); + + //result validation + String html = doBasicValidation(); + Assert.assertTrue("No english text", + html.contains("Matching of further information failed")); + + } + + @Test + public void validHtmlResponseWithOutLocale() throws TaskExecutionException, UnsupportedEncodingException { + task.execute(pendingReq, executionContext); //result validation @@ -79,6 +128,8 @@ public class GenerateOtherLoginMethodGuiTaskTest { Assert.assertTrue("No english text", html.contains("Information on Logins with European eIDs")); + Assert.assertFalse("No english text", + html.contains("Matching of further information failed")); } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveOtherLoginMethodGuiResponseTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveOtherLoginMethodGuiResponseTaskTest.java index c6b2e1fe..84e78fdb 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveOtherLoginMethodGuiResponseTaskTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveOtherLoginMethodGuiResponseTaskTest.java @@ -1,12 +1,12 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SelectedLoginMethod; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.InvalidUserInputException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveOtherLoginMethodGuiResponseTask; -import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; -import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThrows; +import static org.springframework.util.Assert.isInstanceOf; + import org.apache.commons.lang3.RandomStringUtils; import org.junit.Before; import org.junit.BeforeClass; @@ -23,8 +23,13 @@ import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import static org.junit.Assert.*; -import static org.springframework.util.Assert.isInstanceOf; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SelectedLoginMethod; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.InvalidUserInputException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveOtherLoginMethodGuiResponseTask; +import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; +import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; +import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { @@ -83,9 +88,15 @@ public class ReceiveOtherLoginMethodGuiResponseTaskTest { public void withNoOtherLoginSelection() throws TaskExecutionException { testTransition(SelectedLoginMethod.NO_OTHER_LOGIN, Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK); } + + @Test + public void withAddMeAsNewSelection() throws TaskExecutionException { + testTransition(SelectedLoginMethod.ADD_ME_AS_NEW, Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK); + } public void testTransition(SelectedLoginMethod loginMethod, String expectedTransition) throws TaskExecutionException { httpReq.setParameter(Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER, loginMethod.name()); + executionContext.put(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED, true); task.execute(pendingReq, executionContext); @@ -94,6 +105,8 @@ public class ReceiveOtherLoginMethodGuiResponseTaskTest { assertNotNull("no login-selection found", executionContext.get(Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER)); assertEquals("Wrong login-selection found", loginMethod, executionContext.get(Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER)); assertEquals("Next task", true, executionContext.get(expectedTransition)); + assertNull("find advancedMatchingError flag", executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED)); + } public void withInvalidSelection() { -- cgit v1.2.3 From 8d2aa68bc18c04c2b03cbdd01f008a89e4c8c1c6 Mon Sep 17 00:00:00 2001 From: Christian Kollmann Date: Tue, 7 Dec 2021 07:51:10 +0100 Subject: Unify HTML templates across test, main, basicConfig --- basicConfig/properties/messages.properties | 19 +- basicConfig/properties/messages_de.properties | 18 +- basicConfig/templates/other_login_method.html | 264 +++-------- basicConfig/templates/residency.html | 39 +- basicConfig/webcontent/css/css_country.css | 293 ++++++------ .../controller/AdresssucheController.java | 38 ++ .../main/resources/properties/messages.properties | 127 ++++++ .../resources/properties/messages_de.properties | 128 ++++++ .../main/resources/templates/countrySelection.html | 501 +++++++++++---------- .../resources/templates/eidas_node_forward.html | 36 ++ .../resources/templates/other_login_method.html | 77 ++++ .../src/main/resources/templates/residency.html | 39 +- connector/src/main/webapp/css/basic.css | 4 - connector/src/main/webapp/js/js_country.js | 42 ++ .../connector/test/FullStartUpAndProcessTest.java | 52 +-- .../test/saml2/Pvp2SProfileEndPointTest.java | 202 ++++----- .../config/properties/messages.properties | 18 +- .../config/properties/messages_de.properties | 18 +- .../config/templates/countrySelection.html | 457 ++++++++++--------- .../config/templates/countrySelection_example.html | 210 --------- .../src/test/resources/config/templates/error.html | 53 +++ .../config/templates/other_login_method.html | 202 +-------- .../test/resources/config/templates/residency.html | 39 +- .../config/webcontent/css/css_country.css | 293 ++++++------ .../resources/config/webcontent/js/js_country.js | 58 +-- 25 files changed, 1684 insertions(+), 1543 deletions(-) create mode 100644 connector/src/main/resources/properties/messages.properties create mode 100644 connector/src/main/resources/properties/messages_de.properties create mode 100644 connector/src/main/resources/templates/eidas_node_forward.html create mode 100644 connector/src/main/resources/templates/other_login_method.html delete mode 100644 connector/src/main/webapp/css/basic.css create mode 100644 connector/src/main/webapp/js/js_country.js delete mode 100644 connector/src/test/resources/config/templates/countrySelection_example.html create mode 100644 connector/src/test/resources/config/templates/error.html (limited to 'basicConfig/templates/other_login_method.html') diff --git a/basicConfig/properties/messages.properties b/basicConfig/properties/messages.properties index ab7988c9..5f24f0da 100644 --- a/basicConfig/properties/messages.properties +++ b/basicConfig/properties/messages.properties @@ -97,8 +97,8 @@ gui.countryselection.country.ro=Romania gui.countryselection.country.ro.logo.alt=Romania-eID gui.countryselection.country.sk=Slovakia gui.countryselection.country.sk.logo.alt=Slovakia-eID -gui.countryselection.country.sw=Sweden -gui.countryselection.country.sw.logo.alt=Sweden-eID +gui.countryselection.country.se=Sweden +gui.countryselection.country.se.logo.alt=Sweden-eID gui.countryselection.country.uk=United Kingdom gui.countryselection.country.uk.logo.alt=United Kingdom-eID @@ -110,17 +110,20 @@ gui.countryselection.mode.qs=QS gui.countryselection.mode.test=Test gui.countryselection.mode.dev=Development +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Other Login Methods +gui.otherlogin.header.selection=Select an alternative login method +gui.otherlogin.hs=Mobile Signature ("Handy-Signatur") +gui.otherlogin.eidas=Alternative eIDAS ID +gui.otherlogin.none=No alternative login methods +gui.otherlogin.cancel=Cancel + ##Austrian Residency page gui.residency.title=Austrian Residency -gui.residency.logo.bmi.alt=Logo BMI -gui.residency.link.bmi=Mainpage BMI -gui.residency.header1=Federal Ministry of Internal Affairs -gui.residency.header2=Austrian Central eIDAS Node -gui.residency.header3=Operated by Federal Ministry of Internal Affairs gui.residency.header.selection=Search for your Austrian Residency gui.residency.header.help=You can search for the address that you have been registered at in the past. Please enter a \ - Municipality or Village first to start the search. + postcode, municipality or village first to start the search. gui.residency.header.inputinvalid=Be sure to enter a value for Municipality or Village gui.residency.cancel=Cancel gui.residency.search=Search diff --git a/basicConfig/properties/messages_de.properties b/basicConfig/properties/messages_de.properties index e539c2d9..95489b32 100644 --- a/basicConfig/properties/messages_de.properties +++ b/basicConfig/properties/messages_de.properties @@ -96,8 +96,8 @@ gui.countryselection.country.ro=Romänien gui.countryselection.country.ro.logo.alt=Romänische-eID gui.countryselection.country.sk=Slovakei gui.countryselection.country.sk.logo.alt=Slovakische-eID -gui.countryselection.country.sw=Schweden -gui.countryselection.country.sw.logo.alt=Schwedische-eID +gui.countryselection.country.se=Schweden +gui.countryselection.country.se.logo.alt=Schwedische-eID gui.countryselection.country.uk=Großbritanien gui.countryselection.country.uk.logo.alt=Britische-eID @@ -109,17 +109,19 @@ gui.countryselection.mode.qs=Qualitätsicherung gui.countryselection.mode.test=Test gui.countryselection.mode.dev=Development +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Alternative Anmeldemethoden +gui.otherlogin.header.selection=Wählen Sie eine alternative Anmeldemethode +gui.otherlogin.hs=Handy-Signatur +gui.otherlogin.eidas=Alternativer eIDAS Login +gui.otherlogin.none=Keine +gui.otherlogin.cancel=Abbrechen ##Austrian Residency page gui.residency.title=Österreichischer Wohnsitz -gui.residency.logo.bmi.alt=Logo BMI -gui.residency.link.bmi=Startseite BMI -gui.residency.header1=Bundesministerium für Inneres -gui.residency.header2=Zentraler eIDAS Knoten der Republik Österreich -gui.residency.header3=Betrieben durch das Bundesministerium für Inneres gui.residency.header.selection=Suche nach Österreichischem Wohnsitz gui.residency.header.help=Hier können Sie nach einem Wohnsitze in Österreich suchen. Bitte geben Sie zuerst eine \ - Gemeinde oder Ortschaft ein um die Suche zu starten. + Postleitzahl, Gemeinde oder Ortschaft ein um die Suche zu starten. gui.residency.header.inputinvalid=Bitte geben Sie einen Wert für Gemeinde oder Ortschaft ein gui.residency.cancel=Abbrechen gui.residency.search=Suche diff --git a/basicConfig/templates/other_login_method.html b/basicConfig/templates/other_login_method.html index fffe3930..c233c5c4 100644 --- a/basicConfig/templates/other_login_method.html +++ b/basicConfig/templates/other_login_method.html @@ -4,224 +4,74 @@ layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - - - - eIDAS-Login Länderauswahl - - + + + + eIDAS-Login Other Login Methods -
        +
        - - + +
        -
        -
        +
        +
        -

        Zentraler eIDAS Knoten der Republik Österreich

        -

        Betrieben durch das Bundesministerium für Inneres

        +

        Zentraler eIDAS Knoten der Republik Österreich

        +

        Betrieben durch das Bundesministerium für Inneres

        -

        Zuordnung Ihrer Anmeldeinformationen

        - -

        Ihre Anmeldeinformationen konnten nicht eindeutig in das österreichische eID System integriert werden. - Für eine eindeutig Integration sind weitere Informationen erforderlich.

        - - -
        - Info

        +

        Select an alternative login method

        + +
        +
        + + + +
        +
        + + + +
        +
        + + + +
        -
        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        -
        - - -
        - - - + + + +
        - -

        Information zur Anmeldung über Europäische eIDs

        -

        - first part - Bundesministerium für Inneres - second part -

        - -

        - third part - eIDAS-Verordnung der Europäischen Union - fourth part -

        - -

        fived part - - sixed part -

        - -
        -
        - -
        -
        +
        +
        + +
        +
        diff --git a/basicConfig/templates/residency.html b/basicConfig/templates/residency.html index b434b9f9..8192a068 100644 --- a/basicConfig/templates/residency.html +++ b/basicConfig/templates/residency.html @@ -3,7 +3,6 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - @@ -102,17 +101,41 @@ -
        -
        - LanguageSelectionBlock +
        +
        + + +
        +
        +
        +
        +

        Zentraler eIDAS Knoten der Republik Österreich

        +

        Betrieben durch das Bundesministerium für Inneres

        -

        Search your Austrian Residency

        +

        Search your Austrian Residency

        -
        Please enter a Municipality or Village first
        +
        Please enter a postcode, municipality or village first
        @@ -181,5 +204,9 @@
        +
        + +
        +
        diff --git a/basicConfig/webcontent/css/css_country.css b/basicConfig/webcontent/css/css_country.css index 4091955f..bc575c90 100644 --- a/basicConfig/webcontent/css/css_country.css +++ b/basicConfig/webcontent/css/css_country.css @@ -1,137 +1,158 @@ @charset "utf-8"; - body { - background-image: none; - margin: 0px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - #page { - padding-top: 2%; - padding-left: 10%; - } - - #country { - display: flex; - flex-direction: row; - flex-wrap: wrap; - align-items: center; - } - - .block { - display: flex; - flex-direction: row; - flex-wrap: wrap; - cursor: pointer; - text-decoration: none; - padding-right:2%; - width: 250px; - } - - .countryimage { - width:50px; - height:50px; - padding-right: 2%; - padding-bottom: 4%; - } - - input[type=button], input[type=submit], input[type=reset] { - display:flex; - background-color:transparent; - border:none; - color: black; - text-decoration: none; - cursor: pointer; - } - #testEnvironment { - border: none; - color: black; - padding: 10px 20px; - text-decoration: none; - margin: 4px 2px; - height: 3%; - display: inline-block; - vertical-align: middle; - width: 40%; - } - #button{ - background-color: transparent; - border:none; - } - div.header { - background-color: #e9ecef; - padding-top: 28px; - padding-left: 137px; - padding-right: 137px; - padding-bottom: 12px; - } - div.titlebar { - padding: 0px; - } - div.titlebar div { - } - .hidden { - display: none; - } - ul.nav_oben { - padding: 0px; - margin: 0px; - text-align: right; - text-transform: uppercase; - } - li { - display: inline-block; - } - div.header a { - text-decoration: none; - color: black; - } - a { - text-decoration: none; - color: #a22c1c; - } - .content { - padding-left: 137px; - padding-right: 137px; - } - div.subtitle h1 { - padding: 0px; - margin: 0px; - font-size: 130%; - align: right; - } - div.subtitle h2 { - padding: 0px; - margin: 0px; - font-size: 115%; - } - footer { - position: fixed; - left: 0; - padding-left: 137px; - padding-right: 137px; - padding-top: 1em; - bottom: 0; - width: 100%; - height: 2em; - background-color: rgb(162,44,28); - color: white; - } - .float { - float: left; - } - .floatright { - float: right; - } - .copyright { - width: 66%; - font-size: 80%; - } - #countries,#country { - padding-bottom: 40px; - } - input[type=submit] { - width: inherit; - /* text-align: left; */ - } - form { - justify-content: center; - } \ No newline at end of file +body { + background-image: none; + margin: 0px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +#page { + padding-top: 2%; + padding-left: 10%; +} + +#country { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; +} + +.block { + display: flex; + flex-direction: row; + flex-wrap: wrap; + cursor: pointer; + text-decoration: none; + padding-right: 2%; + width: 250px; +} + +.countryimage { + width: 50px; + height: 50px; + padding-right: 2%; + padding-bottom: 4%; +} + +input[type=button], input[type=submit], input[type=reset] { + display: flex; + background-color: transparent; + border: none; + color: black; + text-decoration: none; + cursor: pointer; +} + +#testEnvironment { + border: none; + color: black; + padding: 10px 20px; + text-decoration: none; + margin: 4px 2px; + height: 3%; + display: inline-block; + vertical-align: middle; + width: 40%; +} + +#button { + background-color: transparent; + border: none; +} + +div.header { + background-color: #e9ecef; + padding-top: 28px; + padding-left: 137px; + padding-right: 137px; + padding-bottom: 12px; +} + +div.titlebar { + padding: 0px; +} + +div.titlebar div { +} + +.hidden { + display: none; +} + +ul.nav_oben { + padding: 0px; + margin: 0px; + text-align: right; + text-transform: uppercase; +} + +li { + display: inline-block; +} + +div.header a { + text-decoration: none; + color: black; +} + +a { + text-decoration: none; + color: #a22c1c; +} + +.content { + padding-left: 137px; + padding-right: 137px; +} + +div.subtitle h1 { + padding: 0px; + margin: 0px; + font-size: 130%; + align: right; +} + +div.subtitle h2 { + padding: 0px; + margin: 0px; + font-size: 115%; +} + +footer { + position: fixed; + left: 0; + padding-left: 137px; + padding-right: 137px; + padding-top: 1em; + bottom: 0; + width: 100%; + height: 2em; + background-color: rgb(162, 44, 28); + color: white; +} + +.float { + float: left; +} + +.floatright { + float: right; +} + +.copyright { + width: 66%; + font-size: 80%; +} + +#countries, #country { + padding-bottom: 40px; +} + +input[type=submit] { + width: inherit; + /* text-align: left; */ +} + +form { + justify-content: center; +} \ No newline at end of file diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/AdresssucheController.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/AdresssucheController.java index f71917c3..b044e95e 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/AdresssucheController.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/AdresssucheController.java @@ -100,6 +100,44 @@ public class AdresssucheController { guiBuilder.build(request, response, config, "Query Austrian residency"); } + /** + * Show the "other_login_method.html" directly. + * TODO Remove this after testing. + */ + @RequestMapping(value = {"/olm"}, method = {RequestMethod.GET}) + public void otherloginmethod(HttpServletRequest request, HttpServletResponse response) throws GuiBuildException, + EaafException { + final StaticGuiBuilderConfiguration config = new StaticGuiBuilderConfiguration( + basicConfig, + "http://localhost:8080/ms_connector/", + basicConfig.getBasicConfiguration(//TODO + MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_TEMPLATES_OTHER_LOGIN_METHOD_SELECTION, + MsEidasNodeConstants.TEMPLATE_HTML_OTHERLOGINMETHODS), + MsEidasNodeConstants.ENDPOINT_OTHER_LOGIN_METHOD_SELECTION, + resourceLoader); + config.putCustomParameter(null, "pendingid", pendingReqGeneration.generateExternalPendingRequestId()); + guiBuilder.build(request, response, config, "Other Login Method"); + } + + /** + * Show the "country_selection.html" directly. + * TODO Remove this after testing. + */ + @RequestMapping(value = {"/country"}, method = {RequestMethod.GET}) + public void countryselection(HttpServletRequest request, HttpServletResponse response) throws GuiBuildException, + EaafException { + final StaticGuiBuilderConfiguration config = new StaticGuiBuilderConfiguration( + basicConfig, + "http://localhost:8080/ms_connector/", + basicConfig.getBasicConfiguration(//TODO + MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_TEMPLATES_CCSELECTION, + MsEidasNodeConstants.TEMPLATE_HTML_COUNTRYSELECTION), + MsEidasNodeConstants.ENDPOINT_COUNTRYSELECTION, + resourceLoader); + config.putCustomParameter(null, "pendingid", pendingReqGeneration.generateExternalPendingRequestId()); + guiBuilder.build(request, response, config, "Country Selection"); + } + /** * Performs search for addresses in ZMR. */ diff --git a/connector/src/main/resources/properties/messages.properties b/connector/src/main/resources/properties/messages.properties new file mode 100644 index 00000000..3f662ef9 --- /dev/null +++ b/connector/src/main/resources/properties/messages.properties @@ -0,0 +1,127 @@ +####### GUI elements #### +gui.general.language.selection.title=Language selection +gui.general.language.selection.de=Deutsch +gui.general.language.selection.en=English + +##Errorpage template +gui.errorpage.msg.title=Authentication error arise +gui.errorpage.msg.information=The authentication stops on account of a process error: +gui.errorpage.msg.errorcode=Error Code: +gui.errorpage.msg.errormsg=Error Message: +gui.errorpage.msg.stacktrace=Stacktrace: + +##Country-Selection page +gui.countryselection.title=eIDAS-Login Countryselection +gui.countryselection.logo.bmi.alt=Logo BMI +gui.countryselection.link.bmi=Mainpage BMI +gui.countryselection.header1=Federal Ministry of Internal Affairs +gui.countryselection.header2=Austrian Central eIDAS Node +gui.countryselection.header3=Operated by Federal Ministry of Internal Affairs +gui.countryselection.header.selection=Select your country +gui.countryselection.cancel=Cancel +gui.countryselection.notsupportedinfo=If you cannot find your country in this list then your electronic identity (eID) is not yet supported. + +gui.countryselection.infos.general.header=Information on Logins with European eIDs +gui.countryselection.infos.general.link.1=eIDAS regulation of the European Union +gui.countryselection.infos.general.link.2=Austrian Supplementary Register for Natural Persons (ERnP) +gui.countryselection.infos.general.part.1=This is the central eIDAS node of the Republic of Austria, operated by the +gui.countryselection.infos.general.part.2=It enables logins at Austrian online services using an electronic identity (eID) of another EU member state. You have been redirected to this page, as you have initiated a login to an online service using the option "EU Login". +gui.countryselection.infos.general.part.3=The central eIDAS node of the Republic of Austria allows you to login to Austrian online services using the eID of your home country. This way, compliance with the +gui.countryselection.infos.general.part.4=, which regulates the mutual cross-border acceptance of national eIDs, is achieved. The mutual cross-border acceptance of national eIDs is implemented successively within the EU. Currently, the central eIDAS node of the Republic of Austria supports logins using the eID systems of the Member States mentioned above. More Member States will be added according to availability of their respective eID solutions. +gui.countryselection.infos.general.part.5=After selecting your home country on this page, you are forwarded to the familiar login environment of the selected member state. There, you can login with your eID as usual. After successful completion of the login process, you are automatically forwarded and logged in to the online service, from which you have been redirected to this page. During your first login, your eID data is also registered in the +gui.countryselection.infos.general.part.6=This ensures that you will also be successfully and uniquely identified in subsequent logins at Austrian online services. + +gui.countryselection.country.be=Belgium +gui.countryselection.country.be.logo.alt=Belgium-eID +gui.countryselection.country.hr=Croatia +gui.countryselection.country.hr.logo.alt=Croatia-eID +gui.countryselection.country.cy=Cyprus +gui.countryselection.country.cy.logo.alt=Cyprus-eID +gui.countryselection.country.cz=Czech Republic +gui.countryselection.country.cz.logo.alt=Czech Republic-eID +gui.countryselection.country.ee=Estonia +gui.countryselection.country.ee.logo.alt=Estonia-eID +gui.countryselection.country.de=Germany +gui.countryselection.country.de.logo.alt=German-eID +gui.countryselection.country.is=Iceland +gui.countryselection.country.is.logo.alt=Iceland-eID +gui.countryselection.country.it=Italy +gui.countryselection.country.it.logo.alt=Italy-eID +gui.countryselection.country.lt=Lithuania +gui.countryselection.country.lt.logo.alt=Lithuania-eID +gui.countryselection.country.lv=Latvia +gui.countryselection.country.lv.logo.alt=Latvia-eID +gui.countryselection.country.nl=Netherlands +gui.countryselection.country.nl.logo.alt=Netherlands-eID +gui.countryselection.country.pl=Poland +gui.countryselection.country.pl.logo.alt=Poland-eID +gui.countryselection.country.pt=Portugal +gui.countryselection.country.pt.logo.alt=Portugal-eID +gui.countryselection.country.si=Slovenia +gui.countryselection.country.si.logo.alt=Slovenia-eID +gui.countryselection.country.es=SSpain +gui.countryselection.country.es.logo.alt=Spain-eID + +gui.countryselection.country.bg=Bulgaria +gui.countryselection.country.bg.logo.alt=Bulgaria-eID +gui.countryselection.country.dk=Denmark +gui.countryselection.country.dk.logo.alt=Denmark-eID +gui.countryselection.country.fi=Finland +gui.countryselection.country.fi.logo.alt=Finland-eID +gui.countryselection.country.fr=France +gui.countryselection.country.fr.logo.alt=France-eID +gui.countryselection.country.gr=Greece +gui.countryselection.country.gr.logo.alt=Greece-eID +gui.countryselection.country.hu=Hungary +gui.countryselection.country.hu.logo.alt=Hungary-eID +gui.countryselection.country.ir=Ireland +gui.countryselection.country.ir.logo.alt=Ireland-eID +gui.countryselection.country.lu=Luxembourg +gui.countryselection.country.lu.logo.alt=Luxembourg-eID +gui.countryselection.country.mt=Malta +gui.countryselection.country.mt.logo.alt=Malta-eID +gui.countryselection.country.ro=Romania +gui.countryselection.country.ro.logo.alt=Romania-eID +gui.countryselection.country.sk=Slovakia +gui.countryselection.country.sk.logo.alt=Slovakia-eID +gui.countryselection.country.se=Sweden +gui.countryselection.country.se.logo.alt=Sweden-eID +gui.countryselection.country.uk=United Kingdom +gui.countryselection.country.uk.logo.alt=United Kingdom-eID + +gui.countryselection.country.testcountry=TestCountry +gui.countryselection.country.testcountry.logo.alt=Testcountry-eID + +gui.countryselection.mode.prod=Production +gui.countryselection.mode.qs=QS +gui.countryselection.mode.test=Test +gui.countryselection.mode.dev=Development + +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Other Login Methods +gui.otherlogin.header.selection=Select an alternative login method +gui.otherlogin.hs=Mobile Signature ("Handy-Signatur") +gui.otherlogin.eidas=Alternative eIDAS ID +gui.otherlogin.none=No alternative login methods +gui.otherlogin.cancel=Cancel + +##Austrian Residency page +gui.residency.title=Austrian Residency +gui.residency.header.selection=Search for your Austrian Residency +gui.residency.header.help=You can search for the address that you have been registered at in the past. Please enter a \ + postcode, municipality or village first to start the search. +gui.residency.header.inputinvalid=Be sure to enter a value for Municipality or Village +gui.residency.cancel=Cancel +gui.residency.search=Search +gui.residency.clear=Clear +gui.residency.proceed=Proceed +gui.residency.updated=Updated your input +gui.residency.found=Found {0} results +gui.residency.unique=Unique result found, please proceed +gui.residency.error=Error on Backend Call +gui.residency.apply=Apply +gui.residency.input.postleitzahl=Postcode +gui.residency.input.municipality=Municipality +gui.residency.input.village=Village +gui.residency.input.street=Street +gui.residency.input.number=Number \ No newline at end of file diff --git a/connector/src/main/resources/properties/messages_de.properties b/connector/src/main/resources/properties/messages_de.properties new file mode 100644 index 00000000..c0f3c9a5 --- /dev/null +++ b/connector/src/main/resources/properties/messages_de.properties @@ -0,0 +1,128 @@ +####### GUI elements #### +gui.general.language.selection.title=Sprachauswahl +gui.general.language.selection.de=Deutsch +gui.general.language.selection.en=English + +##Errorpage template +gui.errorpage.msg.title=Es ist ein Fehler aufgetreten +gui.errorpage.msg.information=Der Anmeldevorgang wurde aufgrund eines Fehlers beendet: +gui.errorpage.msg.errorcode=Fehlercode : +gui.errorpage.msg.errormsg=Fehlermeldung: +gui.errorpage.msg.stacktrace=Stacktrace: + +##Country-Selection page +gui.countryselection.title=eIDAS-Login Länderauswahl +gui.countryselection.logo.bmi.alt=Logo BMI +gui.countryselection.link.bmi=Startseite BMI +gui.countryselection.header1=Bundesministerium für Inneres +gui.countryselection.header2=Zentraler eIDAS Knoten der Republik Österreich +gui.countryselection.header3=Betrieben durch das Bundesministerium für Inneres +gui.countryselection.header.selection=Wählen Sie Ihr Land +gui.countryselection.cancel=Abbrechen +gui.countryselection.notsupportedinfo=Wenn Sie Ihr Land in dieser Aufzählung nicht entdecken, dann wird Ihre elektronische Identität (eID) leider noch nicht unterstützt. + +gui.countryselection.infos.general.header=Information zur Anmeldung über Europäische eIDs +gui.countryselection.infos.general.link.1=eIDAS-Verordnung der Europäischen Union +gui.countryselection.infos.general.link.2=Ergänzungsregister für natürliche Personen (ERnP) +gui.countryselection.infos.general.part.1=Sie befinden sich am zentralen eIDAS-Knoten der Republik Österreich. Dieser wird vom Österreichischen +gui.countryselection.infos.general.part.2=betrieben und ermöglicht eine Anmeldungen zu österreichischen Online-Anwendungen unter Verwendung einer elektronischen Identität (eID) anderer EU-Mitgliedstaaten. Sie wurden hierher weitergeleitet, da Sie in einer Online-Anwendung eine Anmeldung via EU-Login initiiert haben. +gui.countryselection.infos.general.part.3=Der zentrale eIDAS-Knoten der Republik Österreich ermöglicht Ihnen eine Anmeldung zu österreichischen Online-Anwendungen mit der eID Ihres Herkunftsstaates. Damit werden die Vorgaben der +gui.countryselection.infos.general.part.4=erfüllt, die eine staatenübergreifende Akzeptanz nationaler eIDs vorsieht. Die wechselseitige Anerkennung nationaler eIDs erfolgt in der EU schrittweise. Aktuell unterstützt der zentrale eIDAS-Knoten der Republik Österreich Anmeldungen mit den eID-Systemen der oben angeführten Mitgliedstaaten. Diese Liste wird laufend erweitert. +gui.countryselection.infos.general.part.5=Nachdem Sie auf dieser Seite einen Mitgliedsstaat ausgewählt haben, werden Sie an die gewohnte Anmeldeumgebung des jeweiligen Mitgliedsstaats weitergeleitet. Dort können Sie sich mit Ihrer eID wie gewohnt anmelden. Haben Sie den Anmeldeprozess erfolgreich abgeschlossen, werden Sie automatisch an die Online-Anwendung, von der aus Sie auf diese Auswahlseite gelangt sind, weitergeleitet und dort mit den Identitätsdaten Ihrer eID angemeldet. Gleichzeitig werden Sie bei Ihrer ersten Anmeldung auf diesem Weg mit Ihren eID-Daten in das österreichische +gui.countryselection.infos.general.part.6=eingetragen. Damit wird sichergestellt, dass Sie auch im Rahmen zukünftiger Anmeldeprozesse zu österreichischen Online-Anwendungen erfolgreich und eindeutig identifiziert werden können. + + +gui.countryselection.country.be=Belgien +gui.countryselection.country.be.logo.alt=Belgische-eID +gui.countryselection.country.hr=Kroatien +gui.countryselection.country.hr.logo.alt=Kroatische-eID +gui.countryselection.country.cy=Zypern +gui.countryselection.country.cy.logo.alt=Zypriotische-eID +gui.countryselection.country.cz=Tschechische Republik +gui.countryselection.country.cz.logo.alt=Tschechische Republik-eID +gui.countryselection.country.ee=Estland +gui.countryselection.country.ee.logo.alt=Estländische-eID +gui.countryselection.country.de=Deutschland +gui.countryselection.country.de.logo.alt=Deutsche-eID +gui.countryselection.country.is=Island +gui.countryselection.country.is.logo.alt=Isländische-eID +gui.countryselection.country.it=Italien +gui.countryselection.country.it.logo.alt=Italienische-eID +gui.countryselection.country.lt=Litauen +gui.countryselection.country.lt.logo.alt=Litauische-eID +gui.countryselection.country.lv=Lettland +gui.countryselection.country.lv.logo.alt=Lettländische-eID +gui.countryselection.country.nl=Niederlande +gui.countryselection.country.nl.logo.alt=Niederländische-eID +gui.countryselection.country.pl=Polen +gui.countryselection.country.pl.logo.alt=Polnische-eID +gui.countryselection.country.pt=Portugal +gui.countryselection.country.pt.logo.alt=Portugisische-eID +gui.countryselection.country.si=Slovenien +gui.countryselection.country.si.logo.alt=Slovenische-eID +gui.countryselection.country.es=Spanien +gui.countryselection.country.es.logo.alt=Spanische-eID + +gui.countryselection.country.bg=Bulgarien +gui.countryselection.country.bg.logo.alt=Bulgarische-eID +gui.countryselection.country.dk=Dänemark +gui.countryselection.country.dk.logo.alt=Dänische-eID +gui.countryselection.country.fi=Finnland +gui.countryselection.country.fi.logo.alt=Finische-eID +gui.countryselection.country.fr=Frankreich +gui.countryselection.country.fr.logo.alt=Französiche-eID +gui.countryselection.country.gr=Grichenland +gui.countryselection.country.gr.logo.alt=Grichische-eID +gui.countryselection.country.hu=Ungarn +gui.countryselection.country.hu.logo.alt=Ungarische-eID +gui.countryselection.country.ir=Irland +gui.countryselection.country.ir.logo.alt=Irische-eID +gui.countryselection.country.lu=Luxenburg +gui.countryselection.country.lu.logo.alt=Luxenburgische-eID +gui.countryselection.country.mt=Malta +gui.countryselection.country.mt.logo.alt=Malta-eID +gui.countryselection.country.ro=Romänien +gui.countryselection.country.ro.logo.alt=Romänische-eID +gui.countryselection.country.sk=Slovakei +gui.countryselection.country.sk.logo.alt=Slovakische-eID +gui.countryselection.country.se=Schweden +gui.countryselection.country.se.logo.alt=Schwedische-eID +gui.countryselection.country.uk=Großbritanien +gui.countryselection.country.uk.logo.alt=Britische-eID + +gui.countryselection.country.testcountry=Testland +gui.countryselection.country.testcountry.logo.alt=Testland-eID + +gui.countryselection.mode.prod=Produktion +gui.countryselection.mode.qs=Qualitätsicherung +gui.countryselection.mode.test=Test +gui.countryselection.mode.dev=Development + +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Alternative Anmeldemethoden +gui.otherlogin.header.selection=Wählen Sie eine alternative Anmeldemethode +gui.otherlogin.hs=Handy-Signatur +gui.otherlogin.eidas=Alternativer eIDAS Login +gui.otherlogin.none=Keine +gui.otherlogin.cancel=Abbrechen + +##Austrian Residency page +gui.residency.title=Österreichischer Wohnsitz +gui.residency.header.selection=Suche nach Österreichischem Wohnsitz +gui.residency.header.help=Hier können Sie nach einem Wohnsitze in Österreich suchen. Bitte geben Sie zuerst eine \ + Postleitzahl, Gemeinde oder Ortschaft ein um die Suche zu starten. +gui.residency.header.inputinvalid=Bitte geben Sie einen Wert für Gemeinde oder Ortschaft ein +gui.residency.cancel=Abbrechen +gui.residency.search=Suche +gui.residency.clear=Löschen +gui.residency.proceed=Fortfahren +gui.residency.updated=Eingabe aktualisiert +gui.residency.found={0} Ergebnisse gefunden +gui.residency.unique=Eindeutiges Ergebnis gefunden, bitte fortfahren +gui.residency.error=Fehler bei Addresssuche +gui.residency.apply=Übernehmen +gui.residency.input.postleitzahl=PLZ +gui.residency.input.municipality=Gemeinde +gui.residency.input.village=Ortschaft +gui.residency.input.street=Straße +gui.residency.input.number=Nummer \ No newline at end of file diff --git a/connector/src/main/resources/templates/countrySelection.html b/connector/src/main/resources/templates/countrySelection.html index b15234eb..e196cd31 100644 --- a/connector/src/main/resources/templates/countrySelection.html +++ b/connector/src/main/resources/templates/countrySelection.html @@ -3,254 +3,267 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - - - - - - eIDAS-Login Länderauswahl + + + + + eIDAS-Login Länderauswahl - -
        -
        - LanguageSelectionBlock -
        - -

        Select your country

        -
        - -
        - Belgium-eID - - - -
        - -
        - Bulgaria-eID - - - -
        - -
        - Croatia-eID - - - -
        - -
        - Cyprus-eID - - - -
        - -
        - CzechRepublic-eID - - - -
        - -
        - Denmark-eID - - - -
        - -
        - Germany-eID - - - -
        - -
        - Estonia-eID - - - -
        - -
        - Finland-eID - - - -
        - -
        - France-eID - - - -
        - -
        - Greece-eID - - - -
        - -
        - Hungary-eID - - - -
        - -
        - Ireland-eID - - - -
        - -
        - Ireland-eID - - - -
        - -
        - Italy-eID - - - -
        - -
        - Latvia-eID - - - -
        - -
        - Luxembourg-eID - - - -
        - -
        - Luxembourg-eID - - - -
        - -
        - Malta-eID - - - -
        - -
        - Netherlands-eID - - - -
        - -
        - Poland-eID - - - -
        - -
        - Portugal-eID - - - -
        - -
        - Romania-eID - - - -
        - -
        - Slovakia-eID - - - -
        - -
        - Slovenia-eID - - - -
        - -
        - Spain-eID - - - -
        - -
        - Sweden-eID - - - -
        - -
        - UnitedKingdom-eID - - - -
        - -
        - - - -
        +
        +
        + +
        +
        +
        +
        +

        Zentraler eIDAS Knoten der Republik Österreich

        +

        Betrieben durch das Bundesministerium für Inneres

        +
        + +

        Wählen Sie Ihr Land / Select your country

        + +
        +
        + Germany-eID + + + + +
        + +
        + Belgium-eID + +
        + +
        + Bulgaria-eID + +
        + +
        + Croatia-eID + +
        + +
        + Cyprus-eID + +
        + +
        + CzechRepublic-eID + +
        + +
        + Denmark-eID + +
        + +
        + Estonia-eID + +
        + +
        + Finland-eID + +
        + +
        + France-eID + +
        + +
        + Greece-eID + +
        + +
        + Hungary-eID + +
        + +
        + Ireland-eID + +
        + +
        + Italy-eID + + +
        + +
        + Latvia-eID + +
        + +
        + Luxembourg-eID + +
        + +
        + Malta-eID + +
        + +
        + Poland-eID + +
        + +
        + Portugal-eID + +
        + +
        + Romania-eID + +
        + +
        + Slovakia-eID + +
        + +
        + Slovenia-eID + +
        + +
        + Spain-eID + + +
        + +
        + Sweden-eID + +
        + +
        + TheNetherlands-eID + +
        + +
        + UnitedKingdom-eID + +
        + +
        + + +
        + + + +
        + +

        Wenn Sie Ihr Land in dieser Aufzählung nicht entdecken + ...

        + +

        Information zur Anmeldung über Europäische eIDs

        +

        + first part + Bundesministerium + für Inneres + second part +

        + +

        + third part + eIDAS-Verordnung der Europäischen Union + fourth part +

        + +

        fived part + + sixed part +

        + +
        +
        + +
        +
        diff --git a/connector/src/main/resources/templates/eidas_node_forward.html b/connector/src/main/resources/templates/eidas_node_forward.html new file mode 100644 index 00000000..186937d7 --- /dev/null +++ b/connector/src/main/resources/templates/eidas_node_forward.html @@ -0,0 +1,36 @@ + + + + + + + + +
        Your login is being processed. Thank you for + waiting.
        + +
        +
        + +
        + +
        + + + \ No newline at end of file diff --git a/connector/src/main/resources/templates/other_login_method.html b/connector/src/main/resources/templates/other_login_method.html new file mode 100644 index 00000000..c233c5c4 --- /dev/null +++ b/connector/src/main/resources/templates/other_login_method.html @@ -0,0 +1,77 @@ + + + + + + + eIDAS-Login Other Login Methods + + +
        +
        + + +
        +
        +
        +
        +

        Zentraler eIDAS Knoten der Republik Österreich

        +

        Betrieben durch das Bundesministerium für Inneres

        +
        + +

        Select an alternative login method

        + +
        +
        + + + +
        +
        + + + +
        +
        + + + +
        +
        + + +
        + + + +
        + +
        +
        + +
        +
        + + diff --git a/connector/src/main/resources/templates/residency.html b/connector/src/main/resources/templates/residency.html index b434b9f9..8192a068 100644 --- a/connector/src/main/resources/templates/residency.html +++ b/connector/src/main/resources/templates/residency.html @@ -3,7 +3,6 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - @@ -102,17 +101,41 @@ -
        -
        - LanguageSelectionBlock +
        +
        + + +
        +
        +
        +
        +

        Zentraler eIDAS Knoten der Republik Österreich

        +

        Betrieben durch das Bundesministerium für Inneres

        -

        Search your Austrian Residency

        +

        Search your Austrian Residency

        -
        Please enter a Municipality or Village first
        +
        Please enter a postcode, municipality or village first
        @@ -181,5 +204,9 @@
        +
        + +
        +
        diff --git a/connector/src/main/webapp/css/basic.css b/connector/src/main/webapp/css/basic.css deleted file mode 100644 index 4bec163a..00000000 --- a/connector/src/main/webapp/css/basic.css +++ /dev/null @@ -1,4 +0,0 @@ -@charset "utf-8"; - .bgTrans { - background-color:transparent - } \ No newline at end of file diff --git a/connector/src/main/webapp/js/js_country.js b/connector/src/main/webapp/js/js_country.js new file mode 100644 index 00000000..5dcea90e --- /dev/null +++ b/connector/src/main/webapp/js/js_country.js @@ -0,0 +1,42 @@ +function clickCountryFlag(element) { + if (!element) return false; + + var form = element.target.closest("form"); + + if (!form) return false; + + form.submit(); + return false; +} + + +/* Set JS events by EventListener to prevent problems with CSP*/ +document.addEventListener("DOMContentLoaded", function(event) { + + /* Element.closest polyfill - https://developer.mozilla.org/en-US/docs/Web/API/Element/closest License: public domain*/ + if (!Element.prototype.matches) + Element.prototype.matches = Element.prototype.msMatchesSelector || + Element.prototype.webkitMatchesSelector; + + if (!Element.prototype.closest) + Element.prototype.closest = function(s) { + var el = this; + if (!document.documentElement.contains(el)) return null; + do { + if (el.matches(s)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + }; + + /* set Click events by EventListener to prevent JavaScript in HTML which can be a problem with CSP*/ + var allFlags = document.getElementsByClassName("countryimage"); + for (i=0;i idp = entity.getRoleDescriptors(IDPSSODescriptor.DEFAULT_ELEMENT_NAME); Assert.assertEquals("IDP descr. size", 1, idp.size()); Assert.assertEquals("IDP descr. endpoints", 2, idp.get(0).getEndpoints().size()); Assert.assertEquals("IDP descr. keyDescr", 1, idp.get(0).getKeyDescriptors().size()); - + } - + } diff --git a/connector/src/test/resources/config/properties/messages.properties b/connector/src/test/resources/config/properties/messages.properties index 2f99d892..3f662ef9 100644 --- a/connector/src/test/resources/config/properties/messages.properties +++ b/connector/src/test/resources/config/properties/messages.properties @@ -84,8 +84,8 @@ gui.countryselection.country.ro=Romania gui.countryselection.country.ro.logo.alt=Romania-eID gui.countryselection.country.sk=Slovakia gui.countryselection.country.sk.logo.alt=Slovakia-eID -gui.countryselection.country.sw=Sweden -gui.countryselection.country.sw.logo.alt=Sweden-eID +gui.countryselection.country.se=Sweden +gui.countryselection.country.se.logo.alt=Sweden-eID gui.countryselection.country.uk=United Kingdom gui.countryselection.country.uk.logo.alt=United Kingdom-eID @@ -97,17 +97,19 @@ gui.countryselection.mode.qs=QS gui.countryselection.mode.test=Test gui.countryselection.mode.dev=Development +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Other Login Methods +gui.otherlogin.header.selection=Select an alternative login method +gui.otherlogin.hs=Mobile Signature ("Handy-Signatur") +gui.otherlogin.eidas=Alternative eIDAS ID +gui.otherlogin.none=No alternative login methods +gui.otherlogin.cancel=Cancel ##Austrian Residency page gui.residency.title=Austrian Residency -gui.residency.logo.bmi.alt=Logo BMI -gui.residency.link.bmi=Mainpage BMI -gui.residency.header1=Federal Ministry of Internal Affairs -gui.residency.header2=Austrian Central eIDAS Node -gui.residency.header3=Operated by Federal Ministry of Internal Affairs gui.residency.header.selection=Search for your Austrian Residency gui.residency.header.help=You can search for the address that you have been registered at in the past. Please enter a \ - Municipality or Village first to start the search. + postcode, municipality or village first to start the search. gui.residency.header.inputinvalid=Be sure to enter a value for Municipality or Village gui.residency.cancel=Cancel gui.residency.search=Search diff --git a/connector/src/test/resources/config/properties/messages_de.properties b/connector/src/test/resources/config/properties/messages_de.properties index ead751d0..c0f3c9a5 100644 --- a/connector/src/test/resources/config/properties/messages_de.properties +++ b/connector/src/test/resources/config/properties/messages_de.properties @@ -85,8 +85,8 @@ gui.countryselection.country.ro=Romänien gui.countryselection.country.ro.logo.alt=Romänische-eID gui.countryselection.country.sk=Slovakei gui.countryselection.country.sk.logo.alt=Slovakische-eID -gui.countryselection.country.sw=Schweden -gui.countryselection.country.sw.logo.alt=Schwedische-eID +gui.countryselection.country.se=Schweden +gui.countryselection.country.se.logo.alt=Schwedische-eID gui.countryselection.country.uk=Großbritanien gui.countryselection.country.uk.logo.alt=Britische-eID @@ -98,17 +98,19 @@ gui.countryselection.mode.qs=Qualitätsicherung gui.countryselection.mode.test=Test gui.countryselection.mode.dev=Development +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Alternative Anmeldemethoden +gui.otherlogin.header.selection=Wählen Sie eine alternative Anmeldemethode +gui.otherlogin.hs=Handy-Signatur +gui.otherlogin.eidas=Alternativer eIDAS Login +gui.otherlogin.none=Keine +gui.otherlogin.cancel=Abbrechen ##Austrian Residency page gui.residency.title=Österreichischer Wohnsitz -gui.residency.logo.bmi.alt=Logo BMI -gui.residency.link.bmi=Startseite BMI -gui.residency.header1=Bundesministerium für Inneres -gui.residency.header2=Zentraler eIDAS Knoten der Republik Österreich -gui.residency.header3=Betrieben durch das Bundesministerium für Inneres gui.residency.header.selection=Suche nach Österreichischem Wohnsitz gui.residency.header.help=Hier können Sie nach einem Wohnsitze in Österreich suchen. Bitte geben Sie zuerst eine \ - Gemeinde oder Ortschaft ein um die Suche zu starten. + Postleitzahl, Gemeinde oder Ortschaft ein um die Suche zu starten. gui.residency.header.inputinvalid=Bitte geben Sie einen Wert für Gemeinde oder Ortschaft ein gui.residency.cancel=Abbrechen gui.residency.search=Suche diff --git a/connector/src/test/resources/config/templates/countrySelection.html b/connector/src/test/resources/config/templates/countrySelection.html index 2483030b..e196cd31 100644 --- a/connector/src/test/resources/config/templates/countrySelection.html +++ b/connector/src/test/resources/config/templates/countrySelection.html @@ -4,233 +4,266 @@ layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - - - - eIDAS-Login Länderauswahl - - - + + + + + eIDAS-Login Länderauswahl -
        +
        - - + +
        -
        -
        +
        +
        -

        Zentraler eIDAS Knoten der Republik Österreich

        -

        Betrieben durch das Bundesministerium für Inneres

        +

        Zentraler eIDAS Knoten der Republik Österreich

        +

        Betrieben durch das Bundesministerium für Inneres

        Wählen Sie Ihr Land / Select your country

        - -
        - Germany-eID - - - -
        +
        + Germany-eID + + + + +
        + +
        + Belgium-eID + +
        + +
        + Bulgaria-eID + +
        + +
        + Croatia-eID + +
        + +
        + Cyprus-eID + +
        + +
        + CzechRepublic-eID + +
        + +
        + Denmark-eID + +
        + +
        + Estonia-eID + +
        + +
        + Finland-eID + +
        + +
        + France-eID + +
        + +
        + Greece-eID + +
        + +
        + Hungary-eID + +
        + +
        + Ireland-eID + +
        + +
        + Italy-eID + + +
        + +
        + Latvia-eID + +
        + +
        + Luxembourg-eID + +
        + +
        + Malta-eID + +
        + +
        + Poland-eID + +
        + +
        + Portugal-eID + +
        + +
        + Romania-eID + +
        + +
        + Slovakia-eID + +
        + +
        + Slovenia-eID + +
        + +
        + Spain-eID + + +
        + +
        + Sweden-eID + +
        + +
        + TheNetherlands-eID + +
        + +
        + UnitedKingdom-eID + +
        -
        - - - + + + +
        -

        Wenn Sie Ihr Land in dieser Aufzählung nicht entdecken ...

        - -

        Information zur Anmeldung über Europäische eIDs

        -

        - first part - Bundesministerium für Inneres - second part -

        - -

        - third part - eIDAS-Verordnung der Europäischen Union - fourth part -

        - -

        fived part - - sixed part -

        - -
        -
        - -
        -
        +

        Wenn Sie Ihr Land in dieser Aufzählung nicht entdecken + ...

        + +

        Information zur Anmeldung über Europäische eIDs

        +

        + first part + Bundesministerium + für Inneres + second part +

        + +

        + third part + eIDAS-Verordnung der Europäischen Union + fourth part +

        + +

        fived part + + sixed part +

        + +
        +
        + +
        +
        diff --git a/connector/src/test/resources/config/templates/countrySelection_example.html b/connector/src/test/resources/config/templates/countrySelection_example.html deleted file mode 100644 index 2128f14d..00000000 --- a/connector/src/test/resources/config/templates/countrySelection_example.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - eIDAS-Login Länderauswahl - - - -
        -
        - LanguageSelectionBlock -
        - -

        Select your country

        -
        - -
        - Germany-eID - - - - -
        - -
        - Belgium-eID - -
        - -
        - Bulgaria-eID - -
        - -
        - Croatia-eID - -
        - -
        - Cyprus-eID - -
        - -
        - CzechRepublic-eID - -
        - -
        - Denmark-eID - -
        - -
        - Estonia-eID - -
        - -
        - Finland-eID - -
        - -
        - France-eID - -
        - -
        - Greece-eID - -
        - -
        - Hungary-eID - -
        - -
        - Ireland-eID - -
        - -
        - Italy-eID - - -
        - -
        - Latvia-eID - -
        - -
        - Luxembourg-eID - -
        - -
        - Malta-eID - -
        - -
        - Poland-eID - -
        - -
        - Portugal-eID - -
        - -
        - Romania-eID - -
        - -
        - Slovakia-eID - -
        - -
        - Slovenia-eID - -
        - -
        - Spain-eID - - -
        - -
        - Sweden-eID - -
        - -
        - TheNetherlands-eID - -
        - -
        - UnitedKingdom-eID - -
        - -
        - -
        - - - -
        - -
        - - diff --git a/connector/src/test/resources/config/templates/error.html b/connector/src/test/resources/config/templates/error.html new file mode 100644 index 00000000..e2c605c7 --- /dev/null +++ b/connector/src/test/resources/config/templates/error.html @@ -0,0 +1,53 @@ + + + + + + +An error arise ... + + + +
        +
        +
        +

        Error Header

        + +
        +

        Error Information

        +
        +

        Code :

        +

        Msg :

        +
        +
        + +
        +

        Timestamp:

        +
        +
        +

        Error:

        +
        +
        +

        Status:

        +
        +
        +

        Message:

        +
        +
        +

        Exception:

        +
        +
        +

        Trace:

        +
        +
        +

        Stacktrace:

        +
        + +
        +
        + + \ No newline at end of file diff --git a/connector/src/test/resources/config/templates/other_login_method.html b/connector/src/test/resources/config/templates/other_login_method.html index 56c368c6..c233c5c4 100644 --- a/connector/src/test/resources/config/templates/other_login_method.html +++ b/connector/src/test/resources/config/templates/other_login_method.html @@ -7,179 +7,7 @@ - eIDAS-Login Login-Auswahl - - - + eIDAS-Login Other Login Methods
        @@ -198,8 +26,10 @@
            -
      • Startseite - BMI
      • +
      • + Startseite + BMI +
      @@ -209,35 +39,31 @@

      Betrieben durch das Bundesministerium für Inneres

      -

      Wählen Sie Ihr Land / Select your country

      +

      Select an alternative login method

      -
      - +
      - + th:attr="value=#{gui.otherlogin.hs}"/> +
      - - + +
      - - + +
      -
      + th:attr="value=#{gui.otherlogin.cancel}">
      diff --git a/connector/src/test/resources/config/templates/residency.html b/connector/src/test/resources/config/templates/residency.html index 99de851a..44cf17a4 100644 --- a/connector/src/test/resources/config/templates/residency.html +++ b/connector/src/test/resources/config/templates/residency.html @@ -3,7 +3,6 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - @@ -102,17 +101,41 @@ -
      -
      - LanguageSelectionBlock +
      +
      + + +
      +
      +
      +
      +

      Zentraler eIDAS Knoten der Republik Österreich

      +

      Betrieben durch das Bundesministerium für Inneres

      -

      Search your Austrian Residency

      +

      Search your Austrian Residency

      -
      Please enter a Municipality or Village first
      +
      Please enter a postcode, municipality or village first
      @@ -181,5 +204,9 @@
      +
      + +
      +
      diff --git a/connector/src/test/resources/config/webcontent/css/css_country.css b/connector/src/test/resources/config/webcontent/css/css_country.css index 4091955f..bc575c90 100644 --- a/connector/src/test/resources/config/webcontent/css/css_country.css +++ b/connector/src/test/resources/config/webcontent/css/css_country.css @@ -1,137 +1,158 @@ @charset "utf-8"; - body { - background-image: none; - margin: 0px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - #page { - padding-top: 2%; - padding-left: 10%; - } - - #country { - display: flex; - flex-direction: row; - flex-wrap: wrap; - align-items: center; - } - - .block { - display: flex; - flex-direction: row; - flex-wrap: wrap; - cursor: pointer; - text-decoration: none; - padding-right:2%; - width: 250px; - } - - .countryimage { - width:50px; - height:50px; - padding-right: 2%; - padding-bottom: 4%; - } - - input[type=button], input[type=submit], input[type=reset] { - display:flex; - background-color:transparent; - border:none; - color: black; - text-decoration: none; - cursor: pointer; - } - #testEnvironment { - border: none; - color: black; - padding: 10px 20px; - text-decoration: none; - margin: 4px 2px; - height: 3%; - display: inline-block; - vertical-align: middle; - width: 40%; - } - #button{ - background-color: transparent; - border:none; - } - div.header { - background-color: #e9ecef; - padding-top: 28px; - padding-left: 137px; - padding-right: 137px; - padding-bottom: 12px; - } - div.titlebar { - padding: 0px; - } - div.titlebar div { - } - .hidden { - display: none; - } - ul.nav_oben { - padding: 0px; - margin: 0px; - text-align: right; - text-transform: uppercase; - } - li { - display: inline-block; - } - div.header a { - text-decoration: none; - color: black; - } - a { - text-decoration: none; - color: #a22c1c; - } - .content { - padding-left: 137px; - padding-right: 137px; - } - div.subtitle h1 { - padding: 0px; - margin: 0px; - font-size: 130%; - align: right; - } - div.subtitle h2 { - padding: 0px; - margin: 0px; - font-size: 115%; - } - footer { - position: fixed; - left: 0; - padding-left: 137px; - padding-right: 137px; - padding-top: 1em; - bottom: 0; - width: 100%; - height: 2em; - background-color: rgb(162,44,28); - color: white; - } - .float { - float: left; - } - .floatright { - float: right; - } - .copyright { - width: 66%; - font-size: 80%; - } - #countries,#country { - padding-bottom: 40px; - } - input[type=submit] { - width: inherit; - /* text-align: left; */ - } - form { - justify-content: center; - } \ No newline at end of file +body { + background-image: none; + margin: 0px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +#page { + padding-top: 2%; + padding-left: 10%; +} + +#country { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; +} + +.block { + display: flex; + flex-direction: row; + flex-wrap: wrap; + cursor: pointer; + text-decoration: none; + padding-right: 2%; + width: 250px; +} + +.countryimage { + width: 50px; + height: 50px; + padding-right: 2%; + padding-bottom: 4%; +} + +input[type=button], input[type=submit], input[type=reset] { + display: flex; + background-color: transparent; + border: none; + color: black; + text-decoration: none; + cursor: pointer; +} + +#testEnvironment { + border: none; + color: black; + padding: 10px 20px; + text-decoration: none; + margin: 4px 2px; + height: 3%; + display: inline-block; + vertical-align: middle; + width: 40%; +} + +#button { + background-color: transparent; + border: none; +} + +div.header { + background-color: #e9ecef; + padding-top: 28px; + padding-left: 137px; + padding-right: 137px; + padding-bottom: 12px; +} + +div.titlebar { + padding: 0px; +} + +div.titlebar div { +} + +.hidden { + display: none; +} + +ul.nav_oben { + padding: 0px; + margin: 0px; + text-align: right; + text-transform: uppercase; +} + +li { + display: inline-block; +} + +div.header a { + text-decoration: none; + color: black; +} + +a { + text-decoration: none; + color: #a22c1c; +} + +.content { + padding-left: 137px; + padding-right: 137px; +} + +div.subtitle h1 { + padding: 0px; + margin: 0px; + font-size: 130%; + align: right; +} + +div.subtitle h2 { + padding: 0px; + margin: 0px; + font-size: 115%; +} + +footer { + position: fixed; + left: 0; + padding-left: 137px; + padding-right: 137px; + padding-top: 1em; + bottom: 0; + width: 100%; + height: 2em; + background-color: rgb(162, 44, 28); + color: white; +} + +.float { + float: left; +} + +.floatright { + float: right; +} + +.copyright { + width: 66%; + font-size: 80%; +} + +#countries, #country { + padding-bottom: 40px; +} + +input[type=submit] { + width: inherit; + /* text-align: left; */ +} + +form { + justify-content: center; +} \ No newline at end of file diff --git a/connector/src/test/resources/config/webcontent/js/js_country.js b/connector/src/test/resources/config/webcontent/js/js_country.js index 5dcea90e..9baa0d0a 100644 --- a/connector/src/test/resources/config/webcontent/js/js_country.js +++ b/connector/src/test/resources/config/webcontent/js/js_country.js @@ -1,41 +1,41 @@ function clickCountryFlag(element) { - if (!element) return false; + if (!element) return false; - var form = element.target.closest("form"); + var form = element.target.closest("form"); - if (!form) return false; + if (!form) return false; - form.submit(); - return false; + form.submit(); + return false; } /* Set JS events by EventListener to prevent problems with CSP*/ -document.addEventListener("DOMContentLoaded", function(event) { - - /* Element.closest polyfill - https://developer.mozilla.org/en-US/docs/Web/API/Element/closest License: public domain*/ - if (!Element.prototype.matches) - Element.prototype.matches = Element.prototype.msMatchesSelector || - Element.prototype.webkitMatchesSelector; - - if (!Element.prototype.closest) - Element.prototype.closest = function(s) { - var el = this; - if (!document.documentElement.contains(el)) return null; - do { - if (el.matches(s)) return el; - el = el.parentElement || el.parentNode; - } while (el !== null && el.nodeType === 1); - return null; - }; - - /* set Click events by EventListener to prevent JavaScript in HTML which can be a problem with CSP*/ - var allFlags = document.getElementsByClassName("countryimage"); - for (i=0;i Date: Tue, 7 Dec 2021 08:41:16 +0100 Subject: Rework styling of other login method template --- basicConfig/templates/other_login_method.html | 35 ++-- .../resources/templates/other_login_method.html | 35 ++-- .../config/templates/other_login_method.html | 35 ++-- .../tasks/GenerateOtherLoginMethodGuiTaskTest.java | 182 +++++++++------------ 4 files changed, 150 insertions(+), 137 deletions(-) (limited to 'basicConfig/templates/other_login_method.html') diff --git a/basicConfig/templates/other_login_method.html b/basicConfig/templates/other_login_method.html index c233c5c4..ea15864e 100644 --- a/basicConfig/templates/other_login_method.html +++ b/basicConfig/templates/other_login_method.html @@ -8,6 +8,16 @@ eIDAS-Login Other Login Methods +
      @@ -41,29 +51,32 @@

      Select an alternative login method

      -
      -
      - +
      + + -
      - + +
      -
      - + +
      -
      - + +
      diff --git a/connector/src/main/resources/templates/other_login_method.html b/connector/src/main/resources/templates/other_login_method.html index c233c5c4..ea15864e 100644 --- a/connector/src/main/resources/templates/other_login_method.html +++ b/connector/src/main/resources/templates/other_login_method.html @@ -8,6 +8,16 @@ eIDAS-Login Other Login Methods +
      @@ -41,29 +51,32 @@

      Select an alternative login method

      -
      -
      - +
      + + -
      - + +
      -
      - + +
      -
      - + +
      diff --git a/connector/src/test/resources/config/templates/other_login_method.html b/connector/src/test/resources/config/templates/other_login_method.html index c233c5c4..ea15864e 100644 --- a/connector/src/test/resources/config/templates/other_login_method.html +++ b/connector/src/test/resources/config/templates/other_login_method.html @@ -8,6 +8,16 @@ eIDAS-Login Other Login Methods +
      @@ -41,29 +51,32 @@

      Select an alternative login method

      -
      -
      - +
      + + -
      - + +
      -
      - + +
      -
      - + +
      diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java index 7c4f8a41..f17f69c3 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java @@ -1,12 +1,15 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.io.UnsupportedEncodingException; -import java.text.MessageFormat; -import java.util.Locale; - +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SelectedLoginMethod; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateOtherLoginMethodGuiTask; +import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; +import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; +import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.json.JsonMapper; +import lombok.SneakyThrows; import org.apache.commons.lang3.RandomStringUtils; import org.junit.Assert; import org.junit.Before; @@ -23,17 +26,12 @@ import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; +import java.io.UnsupportedEncodingException; +import java.text.MessageFormat; +import java.util.Locale; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SelectedLoginMethod; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateOtherLoginMethodGuiTask; -import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; -import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; -import lombok.SneakyThrows; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { @@ -44,27 +42,27 @@ import lombok.SneakyThrows; @WebAppConfiguration public class GenerateOtherLoginMethodGuiTaskTest { - private static final String TEST_PATTER_REQ_PARAM = + private static final String TEST_PATTER_REQ_PARAM = ""; - + private static ObjectMapper mapper = new ObjectMapper(); - - @Autowired GenerateOtherLoginMethodGuiTask task; - + + @Autowired + GenerateOtherLoginMethodGuiTask task; + private ExecutionContextImpl executionContext = new ExecutionContextImpl(); private TestRequestImpl pendingReq; private MockHttpServletRequest httpReq; private MockHttpServletResponse httpResp; - + @BeforeClass public static void classInitializer() { Locale.setDefault(Locale.ENGLISH); - + } - + /** * jUnit test set-up. - * */ @Before public void initialize() { @@ -72,130 +70,106 @@ public class GenerateOtherLoginMethodGuiTaskTest { httpResp = new MockHttpServletResponse(); RequestContextHolder.resetRequestAttributes(); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); - + pendingReq = new TestRequestImpl(); pendingReq.setAuthUrl("https://localhost/ms_connector"); pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10)); - + LocaleContextHolder.resetLocaleContext(); } - - + + @Test @SneakyThrows - public void jsonResponse() throws TaskExecutionException, UnsupportedEncodingException { - + public void jsonResponse() throws TaskExecutionException, UnsupportedEncodingException { + executionContext.put(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED, true); httpReq.addHeader("Accept", "application/json"); - + task.execute(pendingReq, executionContext); - + //result validation Assert.assertEquals("httpStausCode", 200, httpResp.getStatus()); Assert.assertEquals("http ContentType", "application/json;charset=UTF-8", httpResp.getContentType()); final String content = httpResp.getContentAsString(); assertNotNull("response body is null", content); Assert.assertFalse("response body is empty", content.isEmpty()); - final JsonNode json = new JsonMapper().readTree(content); - assertNotNull("response body is null", json); + final JsonNode json = new JsonMapper().readTree(content); + assertNotNull("response body is null", json); assertNotNull("advancedMatchFailed", json.get(Constants.HTML_FORM_ADVANCED_MATCHING_FAILED)); assertTrue("advancedMatchFailed", json.get(Constants.HTML_FORM_ADVANCED_MATCHING_FAILED).asBoolean()); - + } - + @Test - public void advancedMatchingFailedMsg() throws TaskExecutionException, UnsupportedEncodingException { - + public void advancedMatchingFailedMsg() throws TaskExecutionException, UnsupportedEncodingException { + executionContext.put(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED, true); - + task.execute(pendingReq, executionContext); - - //result validation - String html = doBasicValidation(); - - Assert.assertTrue("No english text", - html.contains("Matching of further information failed")); - + + doBasicValidation(); + } - + @Test - public void validHtmlResponseWithOutLocale() throws TaskExecutionException, UnsupportedEncodingException { - + public void validHtmlResponseWithOutLocale() throws TaskExecutionException, UnsupportedEncodingException { + task.execute(pendingReq, executionContext); - - //result validation - String html = doBasicValidation(); - - Assert.assertTrue("No english text", - html.contains("Information on Logins with European eIDs")); - Assert.assertFalse("No english text", - html.contains("Matching of further information failed")); - + + doBasicValidation(); + } - + @Test - public void validHtmlResponseWithDE() throws TaskExecutionException, UnsupportedEncodingException { + public void validHtmlResponseWithDE() throws TaskExecutionException, UnsupportedEncodingException { LocaleContextHolder.setLocale(Locale.GERMAN); httpReq.addHeader("Accept-Language", "de"); - + task.execute(pendingReq, executionContext); - - //result validation - String html = doBasicValidation(); - - Assert.assertTrue("No english text", - html.contains("Information zur Anmeldung über Europäische eIDs")); - + + doBasicValidation(); + } - + @Test - public void validHtmlResponseWithEN() throws TaskExecutionException, UnsupportedEncodingException { + public void validHtmlResponseWithEN() throws TaskExecutionException, UnsupportedEncodingException { LocaleContextHolder.setLocale(Locale.ENGLISH); - + task.execute(pendingReq, executionContext); - - //result validation - String html = doBasicValidation(); - - Assert.assertTrue("No english text", - html.contains("Information on Logins with European eIDs")); - + + doBasicValidation(); + } - + @Test - public void validHtmlResponseWithFR() throws TaskExecutionException, UnsupportedEncodingException { + public void validHtmlResponseWithFR() throws TaskExecutionException, UnsupportedEncodingException { LocaleContextHolder.setLocale(Locale.FRANCE); httpReq.addHeader("Accept-Language", "fr"); - + task.execute(pendingReq, executionContext); - - //result validation - String html = doBasicValidation(); - - Assert.assertTrue("No english text", - html.contains("Information on Logins with European eIDs")); - + + doBasicValidation(); + } - - private String doBasicValidation() throws UnsupportedEncodingException { + + private void doBasicValidation() throws UnsupportedEncodingException { Assert.assertEquals("Wrong http StatusCode", 200, httpResp.getStatus()); Assert.assertEquals("Wrong http ContentType", "text/html;charset=UTF-8", httpResp.getContentType()); - + String html = httpResp.getContentAsString(); Assert.assertNotNull("html result is null", html); - Assert.assertFalse("html result is empty", html.isEmpty()); - - Assert.assertTrue("Missing IDA Login", + Assert.assertFalse("html result is empty", html.isEmpty()); + + Assert.assertTrue("Missing IDA Login", html.contains(MessageFormat.format(TEST_PATTER_REQ_PARAM, SelectedLoginMethod.MOBILE_PHONE_SIGNATURE_LOGIN))); - Assert.assertTrue("Missing residence infos", + Assert.assertTrue("Missing residence infos", html.contains(MessageFormat.format(TEST_PATTER_REQ_PARAM, SelectedLoginMethod.NO_OTHER_LOGIN))); - - Assert.assertTrue("No language selector with pendingRequestId", + + Assert.assertTrue("No language selector with pendingRequestId", html.contains("/otherLoginMethod?pendingid=" + pendingReq.getPendingRequestId())); - Assert.assertTrue("No country-selection form", - html.contains("
      ")); - - return html; - + Assert.assertTrue("No country-selection form", + html.contains("")); + } } -- cgit v1.2.3 From a017ebff96d2cc12943801c933e5733b4e827b3b Mon Sep 17 00:00:00 2001 From: Christian Kollmann Date: Tue, 7 Dec 2021 09:00:22 +0100 Subject: Use relative paths in templates to enable preview in browser If Thymeleaf is active (i.e. the template is rendered by the Webapp), the path gets replaced anyway. --- basicConfig/templates/countrySelection.html | 2 +- .../templates/countrySelection_example.html | 59 +++++++++++----------- basicConfig/templates/eidas_node_forward.html | 2 +- basicConfig/templates/error_message.html | 12 ++--- basicConfig/templates/other_login_method.html | 2 +- basicConfig/templates/pvp2_post_binding.html | 4 +- basicConfig/templates/residency.html | 2 +- basicConfig/webcontent/autocommit.js | 5 ++ basicConfig/webcontent/css/css_error.css | 26 ++++++++++ .../main/resources/templates/countrySelection.html | 56 ++++++++++---------- .../resources/templates/eidas_node_forward.html | 2 +- .../main/resources/templates/error_message.html | 20 ++++---- .../resources/templates/other_login_method.html | 2 +- .../resources/templates/pvp2_post_binding.html | 4 +- .../src/main/resources/templates/residency.html | 6 +-- .../config/templates/countrySelection.html | 4 +- .../config/templates/eidas_node_forward.html | 2 +- .../src/test/resources/config/templates/error.html | 2 +- .../resources/config/templates/error_message.html | 20 ++++---- .../config/templates/other_login_method.html | 2 +- .../config/templates/pvp2_post_binding.html | 4 +- .../test/resources/config/templates/residency.html | 2 +- .../test/resources/config/webcontent/autocommit.js | 5 ++ .../resources/config/webcontent/css/css_error.css | 26 ++++++++++ .../resources/templates/eidas_node_forward.html | 2 +- 25 files changed, 168 insertions(+), 105 deletions(-) create mode 100644 basicConfig/webcontent/autocommit.js create mode 100644 basicConfig/webcontent/css/css_error.css create mode 100644 connector/src/test/resources/config/webcontent/autocommit.js create mode 100644 connector/src/test/resources/config/webcontent/css/css_error.css (limited to 'basicConfig/templates/other_login_method.html') diff --git a/basicConfig/templates/countrySelection.html b/basicConfig/templates/countrySelection.html index 2483030b..bfa30669 100644 --- a/basicConfig/templates/countrySelection.html +++ b/basicConfig/templates/countrySelection.html @@ -6,7 +6,7 @@ - + eIDAS-Login Länderauswahl diff --git a/basicConfig/templates/countrySelection_example.html b/basicConfig/templates/countrySelection_example.html index 2128f14d..abbe0491 100644 --- a/basicConfig/templates/countrySelection_example.html +++ b/basicConfig/templates/countrySelection_example.html @@ -7,8 +7,8 @@ - - + + eIDAS-Login Länderauswahl @@ -22,7 +22,7 @@
      - Germany-eIDGermany-eID @@ -36,79 +36,79 @@
      - Belgium-eIDBelgium-eID
      - Bulgaria-eIDBulgaria-eID
      - Croatia-eIDCroatia-eID
      - Cyprus-eIDCyprus-eID
      - CzechRepublic-eIDCzechRepublic-eID
      - Denmark-eIDDenmark-eID
      - Estonia-eIDEstonia-eID
      - Finland-eIDFinland-eID
      - France-eIDFrance-eID
      - Greece-eIDGreece-eID
      - Hungary-eIDHungary-eID
      - Ireland-eIDIreland-eID
      - Italy-eIDItaly-eID
      - Luxembourg-eIDLuxembourg-eID
      - Malta-eIDMalta-eID
      - Poland-eIDPoland-eID
      - Portugal-eIDPortugal-eID
      - Romania-eIDRomania-eID
      - Slovakia-eIDSlovakia-eID
      - Slovenia-eIDSlovenia-eID
      - Spain-eIDSpain-eID
      - TheNetherlands-eID + TheNetherlands-eID
      - UnitedKingdom-eIDUnitedKingdom-eID
      diff --git a/basicConfig/templates/eidas_node_forward.html b/basicConfig/templates/eidas_node_forward.html index 186937d7..6dffa34b 100644 --- a/basicConfig/templates/eidas_node_forward.html +++ b/basicConfig/templates/eidas_node_forward.html @@ -4,7 +4,7 @@ layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - diff --git a/basicConfig/templates/error_message.html b/basicConfig/templates/error_message.html index b1367962..f69d7255 100644 --- a/basicConfig/templates/error_message.html +++ b/basicConfig/templates/error_message.html @@ -3,10 +3,10 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - + - - + + An error arise ... @@ -14,10 +14,10 @@

      Authentication error arise

      - +

      Error Header

      - +

      Error Information


      @@ -25,7 +25,7 @@

      Msg :

      - +
      diff --git a/basicConfig/templates/other_login_method.html b/basicConfig/templates/other_login_method.html index ea15864e..8f846f84 100644 --- a/basicConfig/templates/other_login_method.html +++ b/basicConfig/templates/other_login_method.html @@ -6,7 +6,7 @@ - + eIDAS-Login Other Login Methods