aboutsummaryrefslogtreecommitdiff
path: root/connector/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'connector/src/main')
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java220
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/controller/ProcessEngineSignalController.java3
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java13
-rw-r--r--connector/src/main/resources/application.properties16
-rw-r--r--connector/src/main/resources/properties/status_messages_en.properties3
-rw-r--r--connector/src/main/resources/specific_eIDAS_connector.beans.xml88
-rw-r--r--connector/src/main/resources/templates/countrySelection.html170
7 files changed, 147 insertions, 366 deletions
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java
deleted file mode 100644
index b4d58cdd..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright 2019 A-SIT Plus GmbH
- * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ,
- * A-SIT Plus GmbH, A-SIT, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "License");
- * You may not use this work except in compliance with the License.
- * You may obtain a copy of the License at:
- * https://joinup.ec.europa.eu/news/understanding-eupl-v12
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-package at.asitplus.eidas.specific.connector.config;
-
-import java.net.MalformedURLException;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.support.ReloadableResourceBundleMessageSource;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import org.springframework.web.servlet.i18n.CookieLocaleResolver;
-import org.thymeleaf.templateresolver.FileTemplateResolver;
-
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
-import at.gv.egiz.eaaf.core.api.logging.IMessageSourceLocation;
-import at.gv.egiz.eaaf.core.impl.utils.FileUtils;
-
-/**
- * Spring configurator for Web resources.
- *
- * @author tlenz
- *
- */
-@Configuration
-public class StaticResourceConfiguration implements WebMvcConfigurer {
- private static final Logger log = LoggerFactory.getLogger(StaticResourceConfiguration.class);
- private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
- "/"
- };
-
- private static final String DEFAULT_MESSAGE_SOURCE = "classpath:properties/status_messages";
-
- @Autowired
- private IConfiguration basicConfig;
-
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- final String staticResources = basicConfig.getBasicConfiguration(
- MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_STATIC_PATH);
- try {
- if (StringUtils.isNotEmpty(staticResources)) {
- String absPath = FileUtils.makeAbsoluteUrl(staticResources, basicConfig
- .getConfigurationRootDirectory());
- if (!absPath.endsWith("/")) {
- absPath += "/";
- }
-
- registry.addResourceHandler("/static/**").addResourceLocations(absPath);
- log.info("Add Ressourcefolder: " + absPath + " for static Web content");
-
- } else {
- log.debug("No Ressourcefolder for static Web content");
- }
-
- } catch (final MalformedURLException e) {
- log.warn("Can NOT initialize ressourcefolder for static Web content", e);
-
- }
-
- registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
-
- }
-
- /**
- * Get a message source with only internal message properties.
- *
- * @param ressourceLocations List of source-locations
- * @return
- */
- @Bean
- public ReloadableResourceBundleMessageSource internalMessageSource(
- @Autowired(required = false) final List<IMessageSourceLocation> ressourceLocations) {
- final ReloadableResourceBundleMessageSource messageSource =
- new ReloadableResourceBundleMessageSource();
-
- // add default message source
- messageSource.setBasename(DEFAULT_MESSAGE_SOURCE);
-
- if (ressourceLocations != null) {
- // load more message sources
- for (final IMessageSourceLocation el : ressourceLocations) {
- if (el.getMessageSourceLocation() != null) {
- for (final String source : el.getMessageSourceLocation()) {
- messageSource.addBasenames(source);
- log.debug("Add additional messageSources: {}", el.getMessageSourceLocation().toArray());
-
- }
- }
- }
- }
-
- messageSource.setDefaultEncoding("UTF-8");
- return messageSource;
-
- }
-
- /**
- * Get full message source with internal and external message-properties files.
- *
- * @param ressourceLocations List of source-locations
- * @return
- */
- @Bean
- public ReloadableResourceBundleMessageSource messageSource(
- @Autowired(required = false) final List<IMessageSourceLocation> ressourceLocations) {
- final ReloadableResourceBundleMessageSource messageSource =
- new ReloadableResourceBundleMessageSource();
- messageSource.setDefaultEncoding("UTF-8");
- messageSource.setParentMessageSource(internalMessageSource(ressourceLocations));
-
- final String staticResources = basicConfig
- .getBasicConfiguration(MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_PROPERTIES_PATH);
- try {
- if (StringUtils.isNotEmpty(staticResources)) {
- final String absPath =
- FileUtils.makeAbsoluteUrl(staticResources, basicConfig.getConfigurationRootDirectory());
- messageSource.setBasename(absPath);
-
- } else {
- log.debug("No Ressourcefolder for dynamic Web content templates");
-
- }
-
- } catch (final MalformedURLException e) {
- log.warn("Can NOT initialize ressourcefolder for dynamic Web content templates", e);
-
- }
-
- return messageSource;
-
- }
-
- /**
- * Get a i18n resolver based on cookies.
- *
- * @return
- */
- @Bean
- public CookieLocaleResolver localeResolver() {
- final CookieLocaleResolver localeResolver = new CookieLocaleResolver();
- localeResolver.setCookieName("currentLanguage");
- localeResolver.setCookieMaxAge(3600);
- return localeResolver;
-
- }
-
- /**
- * Get a Tyhmeleaf Template-Resolver with external configuration path.
- *
- * @return
- */
- @Bean(name = "templateResolver")
- public FileTemplateResolver templateResolver() {
- final String staticResources = basicConfig
- .getBasicConfiguration(MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_TEMPLATES_PATH);
- try {
- if (StringUtils.isNotEmpty(staticResources)) {
- String absPath =
- FileUtils.makeAbsoluteUrl(staticResources, basicConfig.getConfigurationRootDirectory());
- if (!absPath.endsWith("/")) {
- absPath += "/";
-
- }
-
- if (absPath.startsWith("file:")) {
- absPath = absPath.substring("file:".length());
-
- }
-
- final FileTemplateResolver viewResolver = new FileTemplateResolver();
- viewResolver.setPrefix(absPath);
- viewResolver.setSuffix(".html");
- viewResolver.setTemplateMode("HTML");
- viewResolver.setCacheable(false);
-
- log.info("Add Ressourcefolder: {} for dynamic Web content templates", absPath);
- return viewResolver;
-
- } else {
- log.debug("No Ressourcefolder for dynamic Web content templates");
-
- }
-
- } catch (final MalformedURLException e) {
- log.warn("Can NOT initialize ressourcefolder for dynamic Web content templates", e);
-
- }
-
- throw new RuntimeException("Can NOT initialize HTML template resolver");
-
- }
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/ProcessEngineSignalController.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/ProcessEngineSignalController.java
index 1bf1ad67..6e2879a8 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/ProcessEngineSignalController.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/ProcessEngineSignalController.java
@@ -46,7 +46,8 @@ import at.gv.egiz.eaaf.core.impl.idp.controller.AbstractProcessEngineSignalContr
public class ProcessEngineSignalController extends AbstractProcessEngineSignalController {
@RequestMapping(value = {
- MsEidasNodeConstants.ENDPOINT_COUNTRYSELECTION
+ MsEidasNodeConstants.ENDPOINT_COUNTRYSELECTION,
+ MsEidasNodeConstants.ENDPOINT_OTHER_LOGIN_METHOD_SELECTION
},
method = { RequestMethod.POST, RequestMethod.GET })
public void performGenericAuthenticationProcess(HttpServletRequest req, HttpServletResponse resp)
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java
index e83d9d49..eef09b8d 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java
@@ -29,16 +29,15 @@ import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import at.gv.egiz.eaaf.core.api.IStatusMessenger;
import at.gv.egiz.eaaf.core.exceptions.EaafException;
+import lombok.extern.slf4j.Slf4j;
@Service("StatusMessageProvider")
+@Slf4j
public class StatusMessageProvider implements IStatusMessenger {
- private static final Logger log = LoggerFactory.getLogger(StatusMessageProvider.class);
private static final String ERROR_MESSAGES_UNAVAILABLE =
"Error messages can NOT be load from application. Only errorCode: {0} is availabe";
@@ -93,13 +92,11 @@ public class StatusMessageProvider implements IStatusMessenger {
@Override
public String getResponseErrorCode(Throwable throwable) {
- String errorCode = IStatusMessenger.CODES_EXTERNAL_ERROR_GENERIC;
if (throwable instanceof EaafException) {
- errorCode = ((EaafException) throwable).getErrorId();
-
+ return ((EaafException) throwable).getErrorId();
+
}
-
- return errorCode;
+ return IStatusMessenger.CODES_INTERNAL_ERROR_GENERIC;
}
diff --git a/connector/src/main/resources/application.properties b/connector/src/main/resources/application.properties
index e7437840..bec125dc 100644
--- a/connector/src/main/resources/application.properties
+++ b/connector/src/main/resources/application.properties
@@ -98,6 +98,22 @@ eidas.ms.auth.eIDAS.szrclient.eidasbind.mds.inject=false
#eidas.ms.auth.eIDAS.authblock.key.password=f/+saJBc3a}*/T^s
+
+#### matching######
+# ZMR communication
+#eidas.ms.auth.eIDAS.zmrclient.endpoint=http://localhost:1234/demozmr
+#eidas.ms.auth.eIDAS.zmrclient.ssl.keyStore.type=jks
+#eidas.ms.auth.eIDAS.zmrclient.ssl.keyStore.path=keys/junit.jks
+#eidas.ms.auth.eIDAS.zmrclient.ssl.keyStore.password=password
+#eidas.ms.auth.eIDAS.zmrclient.ssl.trustStore.path=
+#eidas.ms.auth.eIDAS.zmrclient.ssl.trustStore.password=
+
+#eidas.ms.auth.eIDAS.zmrclient.req.organisation.behoerdennr=jUnit123456
+#eidas.ms.auth.eIDAS.zmrclient.req.update.reason.code=PERS_AENDERN
+#eidas.ms.auth.eIDAS.zmrclient.req.update.reason.text=KITT for eIDAS Matching
+
+
+
#Raw eIDAS Id data storage
eidas.ms.auth.eIDAS.szrclient.workarounds.eidmapping.revisionlog.active=true
diff --git a/connector/src/main/resources/properties/status_messages_en.properties b/connector/src/main/resources/properties/status_messages_en.properties
index 80228a47..f07a8705 100644
--- a/connector/src/main/resources/properties/status_messages_en.properties
+++ b/connector/src/main/resources/properties/status_messages_en.properties
@@ -5,7 +5,8 @@ eidas.03=No CitizenCountry available. Can not start eIDAS authentication process
eidas.04=Request contains no sessionToken. Authentication process stops
eidas.05=Received eIDAS response-message is not valid. Reason: {0}
eidas.06=LoA from eIDAS response-message {0} does not match to requested LoA
-eidas.07=eIDAS Response attribute-validation FAILED. Attribute:{0} Reason: {1}
+eidas.07=eIDAS Response attribute-validation FAILED. Attribute:{0} Reason: {1}.
+
config.01=No configuration-file parameter found. Maybe Java SystemD parameter is missing
config.03=Can not load configuration from path {0} (See logs for more details)
diff --git a/connector/src/main/resources/specific_eIDAS_connector.beans.xml b/connector/src/main/resources/specific_eIDAS_connector.beans.xml
index 8ff4e565..a417a0e5 100644
--- a/connector/src/main/resources/specific_eIDAS_connector.beans.xml
+++ b/connector/src/main/resources/specific_eIDAS_connector.beans.xml
@@ -13,116 +13,102 @@
<import resource="common_gui.beans.xml"/>
- <bean id="WebResourceConfiguration"
- class="at.asitplus.eidas.specific.connector.config.StaticResourceConfiguration" />
-
<bean id="processEngineSignalController"
- class="at.asitplus.eidas.specific.connector.controller.ProcessEngineSignalController" />
+ class="at.asitplus.eidas.specific.connector.controller.ProcessEngineSignalController" />
<bean id="saml2MetadataGeneration"
class="at.asitplus.eidas.specific.connector.health.Saml2MetadataHealthIndicator">
- <property name="pvpIdpCredentials">
- <ref bean="PVPEndPointCredentialProvider" />
- </property>
+ <property name="pvpIdpCredentials" ref="PVPEndPointCredentialProvider" />
</bean>
+ <bean id="defaultErrorTicketService"
+ class="at.gv.egiz.eaaf.core.impl.idp.auth.services.DefaultErrorService"/>
+
<bean id="eidasNodeMetadata"
class="at.asitplus.eidas.specific.connector.health.EidasNodeMetadataHealthIndicator" />
<bean id="AuthenticationManager"
- class="at.asitplus.eidas.specific.connector.auth.AuthenticationManager" />
+ class="at.asitplus.eidas.specific.connector.auth.AuthenticationManager" />
<bean id="AuthenticationDataBuilder"
- class="at.asitplus.eidas.specific.connector.builder.AuthenticationDataBuilder" />
+ class="at.asitplus.eidas.specific.connector.builder.AuthenticationDataBuilder" />
<bean id="PVPEndPointConfiguration"
- class="at.asitplus.eidas.specific.connector.config.PvpEndPointConfiguration" />
+ class="at.asitplus.eidas.specific.connector.config.PvpEndPointConfiguration" />
<bean id="PVPEndPointCredentialProvider"
- class="at.asitplus.eidas.specific.connector.provider.PvpEndPointCredentialProvider" />
+ class="at.asitplus.eidas.specific.connector.provider.PvpEndPointCredentialProvider" />
<bean id="PVPMetadataConfigurationFactory"
- class="at.asitplus.eidas.specific.connector.provider.PvpMetadataConfigurationFactory" />
+ class="at.asitplus.eidas.specific.connector.provider.PvpMetadataConfigurationFactory" />
<bean id="pvp2SProfileEndpoint"
- class="at.asitplus.eidas.specific.connector.controller.Pvp2SProfileEndpoint">
- <property name="pvpIdpCredentials">
- <ref bean="PVPEndPointCredentialProvider" />
- </property>
- <property name="metadataProvider">
- <ref bean="PVPMetadataProvider" />
- </property>
+ class="at.asitplus.eidas.specific.connector.controller.Pvp2SProfileEndpoint">
+ <property name="pvpIdpCredentials" ref="PVPEndPointCredentialProvider" />
+ <property name="metadataProvider" ref="PVPMetadataProvider" />
</bean>
<bean id="AuthnRequestValidator"
- class="at.asitplus.eidas.specific.connector.verification.AuthnRequestValidator" />
+ class="at.asitplus.eidas.specific.connector.verification.AuthnRequestValidator" />
- <bean id="SAMLVerificationEngine"
- class="at.gv.egiz.eaaf.modules.pvp2.impl.verification.SamlVerificationEngine" />
+ <!-- bean id="SAMLVerificationEngine"
+ class="at.gv.egiz.eaaf.modules.pvp2.impl.verification.SamlVerificationEngine" /-->
<bean id="pvpMetadataService"
- class="at.gv.egiz.eaaf.modules.pvp2.idp.impl.MetadataAction">
- <property name="pvpIdpCredentials">
- <ref bean="PVPEndPointCredentialProvider" />
- </property>
+ class="at.gv.egiz.eaaf.modules.pvp2.idp.impl.MetadataAction">
+ <property name="pvpIdpCredentials" ref="PVPEndPointCredentialProvider" />
</bean>
<bean id="PVPAuthenticationRequestAction"
- class="at.gv.egiz.eaaf.modules.pvp2.idp.impl.AuthenticationAction">
- <property name="pvpIdpCredentials">
- <ref bean="PVPEndPointCredentialProvider" />
- </property>
- <property name="metadataProvider">
- <ref bean="PVPMetadataProvider" />
- </property>
+ class="at.gv.egiz.eaaf.modules.pvp2.idp.impl.AuthenticationAction">
+ <property name="pvpIdpCredentials" ref="PVPEndPointCredentialProvider" />
+ <property name="metadataProvider" ref="PVPMetadataProvider" />
</bean>
<bean id="eaafProtocolAuthenticationService"
- class="at.gv.egiz.eaaf.core.impl.idp.auth.services.ProtocolAuthenticationService">
+ class="at.gv.egiz.eaaf.core.impl.idp.auth.services.ProtocolAuthenticationService">
<property name="guiBuilder" ref="mvcGUIBuilderImpl" />
</bean>
- <bean id="defaultErrorHandler"
- class="at.gv.egiz.eaaf.core.impl.idp.auth.services.DefaultErrorService"/>
-
<bean id="securePendingRequestIdGeneration"
- class="at.gv.egiz.eaaf.core.impl.utils.SecurePendingRequestIdGenerationStrategy" />
+ class="at.gv.egiz.eaaf.core.impl.utils.SecurePendingRequestIdGenerationStrategy" />
<bean id="PVPMetadataProvider"
- class="at.asitplus.eidas.specific.connector.provider.PvpMetadataProvider" />
+ class="at.asitplus.eidas.specific.connector.provider.PvpMetadataProvider" />
<bean id="PVPSubjectNameGenerator"
- class="at.asitplus.eidas.specific.connector.builder.PvpSubjectNameGenerator" />
+ class="at.asitplus.eidas.specific.connector.builder.PvpSubjectNameGenerator" />
<bean id="LoALevelMapper"
- class="at.asitplus.eidas.specific.connector.mapper.LoALevelMapper" />
+ class="at.asitplus.eidas.specific.connector.mapper.LoALevelMapper" />
<bean id="GUIBuilderConfigurationFactory"
- class="at.asitplus.eidas.specific.connector.gui.GuiBuilderConfigurationFactory" />
+ class="at.asitplus.eidas.specific.connector.gui.GuiBuilderConfigurationFactory" />
<bean id="velocityGUIBuilderImpl"
- class="at.asitplus.eidas.specific.connector.gui.DefaultVelocityGuiBuilderImpl" />
+ class="at.asitplus.eidas.specific.connector.gui.DefaultVelocityGuiBuilderImpl" />
<bean id="mvcGUIBuilderImpl"
- class="at.gv.egiz.eaaf.core.impl.gui.builder.SpringMvcGuiFormBuilderImpl" />
+ class="at.gv.egiz.eaaf.core.impl.gui.builder.SpringMvcGuiFormBuilderImpl" />
+
<bean id="StatusMessageProvider"
- class="at.asitplus.eidas.specific.connector.provider.StatusMessageProvider" />
+ class="at.asitplus.eidas.specific.connector.provider.StatusMessageProvider" />
<bean id="eidasRevisionLogger"
- class="at.asitplus.eidas.specific.connector.logger.RevisionLogger" />
+ class="at.asitplus.eidas.specific.connector.logger.RevisionLogger" />
<bean id="eidasStatisticLogger"
- class="at.asitplus.eidas.specific.connector.logger.StatisticLogger" />
+ class="at.asitplus.eidas.specific.connector.logger.StatisticLogger" />
<!-- Tasks -->
<bean id="GenerateCountrySelectionFrameTask"
- class="at.asitplus.eidas.specific.connector.processes.tasks.GenerateCountrySelectionFrameTask"
- scope="prototype" />
+ class="at.asitplus.eidas.specific.connector.processes.tasks.GenerateCountrySelectionFrameTask"
+ scope="prototype" />
<bean id="EvaluateCountrySelectionTask"
- class="at.asitplus.eidas.specific.connector.processes.tasks.EvaluateCountrySelectionTask"
- scope="prototype" />
+ class="at.asitplus.eidas.specific.connector.processes.tasks.EvaluateCountrySelectionTask"
+ scope="prototype" />
</beans> \ 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 3937b464..b15234eb 100644
--- a/connector/src/main/resources/templates/countrySelection.html
+++ b/connector/src/main/resources/templates/countrySelection.html
@@ -3,12 +3,12 @@
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorator="fragments/base"
th:with="lang=${#locale.language}" th:lang="${lang}">
-
+
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/>
- <script type="text/javascript" src="$contextPath/static/js/js_country.js" th:attr="src=@{/static/static/js/js_country.js}"></script>
+ <script type="text/javascript" src="$contextPath/static/js/js_country.js" th:attr="src=@{/static/static/js/js_country.js}"></script>
<title th:text="#{gui.countryselection.title}">eIDAS-Login Länderauswahl</title>
</head>
@@ -17,236 +17,236 @@
<div class="languageselection" th:include="language_selection :: selectlanguage">
LanguageSelectionBlock
</div>
-
+
<h2 th:text="#{gui.countryselection.header.selection}"> Select your country </h2>
<div id="country">
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Belgium-EU.png" alt="Belgium-eID"
th:attr="src=@{img/countries/Belgium-EU.png},alt=#{gui.countryselection.country.be.logo.alt}"/></a>
- <input type="submit" value="Belgium" th:attr="value=#{gui.countryselection.country.be}">
+ <input type="submit" value="Belgium" th:attr="value=#{gui.countryselection.country.be}">
<input type="hidden" name="selectedCountry" value="BE">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Bulgaria-EU.png" alt="Bulgaria-eID"
th:attr="src=@{img/countries/Bulgaria-EU.png},alt=#{gui.countryselection.country.bg.logo.alt}"/></a>
<input type="submit" value="Bulgaria" th:attr="value=#{gui.countryselection.country.bg}" >
<input type="hidden" name="selectedCountry" value="BG">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Croatia-EU.png" alt="Croatia-eID"
th:attr="src=@{img/countries/Croatia-EU.png},alt=#{gui.countryselection.country.hr.logo.alt}"/></a>
<input type="submit" value="Croatia" th:attr="value=#{gui.countryselection.country.hr}">
<input type="hidden" name="selectedCountry" value="HR">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Cyprus-EU.png" alt="Cyprus-eID"
- th:attr="src=@{img/countries/Cyprus-EU.png},alt=#{gui.countryselection.country.cy.logo.alt}"/></a>
+ th:attr="src=@{img/countries/Cyprus-EU.png},alt=#{gui.countryselection.country.cy.logo.alt}"/></a>
<input type="submit" value="Cyprus" th:attr="value=#{gui.countryselection.country.cy}">
<input type="hidden" name="selectedCountry" value="CY">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/CzechRepublic-EU.png" alt="CzechRepublic-eID"
th:attr="src=@{img/countries/CzechRepublic-EU.png},alt=#{gui.countryselection.country.cz.logo.alt}"/></a>
<input type="submit" value="CzechRepublic" th:attr="value=#{gui.countryselection.country.cz}">
<input type="hidden" name="selectedCountry" value="CZ">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Denmark-EU.png" alt="Denmark-eID"
th:attr="src=@{img/countries/Denmark-EU.png},alt=#{gui.countryselection.country.dk.logo.alt}"/></a>
<input type="submit" value="Denmark" th:attr="value=#{gui.countryselection.country.dk}">
<input type="hidden" name="selectedCountry" value="DK">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/germany-eu_.png" alt="Germany-eID"
th:attr="src=@{img/countries/germany-eu_.png},alt=#{gui.countryselection.country.de.logo.alt}"/></a>
<input type="submit" role="button" value="Deutschland / Germany" th:attr="value=#{gui.countryselection.country.de}" />
<input type="hidden" name="selectedCountry" value="DE">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Estonia-EU.png" alt="Estonia-eID"
th:attr="src=@{img/countries/Estonia-EU.png},alt=#{gui.countryselection.country.ee.logo.alt}"/></a>
<input type="submit" value="Estonia" th:attr="value=#{gui.countryselection.country.ee}">
<input type="hidden" name="selectedCountry" value="EE">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Finland-EU.png" alt="Finland-eID"
th:attr="src=@{img/countries/Finland-EU.png},alt=#{gui.countryselection.country.fi.logo.alt}"/></a>
<input type="submit" value="Finland" th:attr="value=#{gui.countryselection.country.fi}">
<input type="hidden" name="selectedCountry" value="FI">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/France-EU.png" alt="France-eID"
th:attr="src=@{img/countries/France-EU.png},alt=#{gui.countryselection.country.fr.logo.alt}"/></a>
<input type="submit" value="France" th:attr="value=#{gui.countryselection.country.fr}">
<input type="hidden" name="selectedCountry" value="FR">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Greece-EU.png" alt="Greece-eID"
- th:attr="src=@{img/countries/Greece-EU.png},alt=#{gui.countryselection.country.gr.logo.alt}"/></a>
+ th:attr="src=@{img/countries/Greece-EU.png},alt=#{gui.countryselection.country.gr.logo.alt}"/></a>
<input type="submit" value="Greece" th:attr="value=#{gui.countryselection.country.gr}">
<input type="hidden" name="selectedCountry" value="GR">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Hungary-EU.png" alt="Hungary-eID"
- th:attr="src=@{img/countries/Hungary-EU.png},alt=#{gui.countryselection.country.hu.logo.alt}"/></a>
+ th:attr="src=@{img/countries/Hungary-EU.png},alt=#{gui.countryselection.country.hu.logo.alt}"/></a>
<input type="submit" value="Hungary" th:attr="value=#{gui.countryselection.country.hu}">
<input type="hidden" name="selectedCountry" value="HU">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Ireland-EU.png" alt="Ireland-eID"
th:attr="src=@{img/countries/Iceland.png},alt=#{gui.countryselection.country.is.logo.alt}"/></a>
<input type="submit" value="Ireland" th:attr="value=#{gui.countryselection.country.is}"/>
<input type="hidden" name="selectedCountry" value="IS">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Ireland-EU.png" alt="Ireland-eID"
th:attr="src=@{img/countries/Ireland-EU.png},alt=#{gui.countryselection.country.ir.logo.alt}"/></a>
<input type="submit" value="Ireland" th:attr="value=#{gui.countryselection.country.ir}">
<input type="hidden" name="selectedCountry" value="IE">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Italy-EU.png" alt="Italy-eID"
th:attr="src=@{img/countries/Italy-EU.png},alt=#{gui.countryselection.country.it.logo.alt}"/></a>
<input type="submit" value="Italy" th:attr="value=#{gui.countryselection.country.it}">
<input type="hidden" name="selectedCountry" value="IT">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Latvia-EU.png" alt="Latvia-eID"
th:attr="src=@{img/countries/Latvia-EU.png},alt=#{gui.countryselection.country.lv.logo.alt}"/></a>
<input type="submit" value="Latvia" th:attr="value=#{gui.countryselection.country.lv}">
<input type="hidden" name="selectedCountry" value="LV">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Luxembourg-EU.png" alt="Luxembourg-eID"
th:attr="src=@{img/countries/Luxembourg-EU.png},alt=#{gui.countryselection.country.lu.logo.alt}"/></a>
<input type="submit" value="Luxembourg" th:attr="value=#{gui.countryselection.country.lu}">
<input type="hidden" name="selectedCountry" value="LT">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Luxembourg-EU.png" alt="Luxembourg-eID"
th:attr="src=@{img/countries/Luxembourg-EU.png},alt=#{gui.countryselection.country.lu.logo.alt}"/></a>
<input type="submit" value="Luxembourg" th:attr="value=#{gui.countryselection.country.lu}">
<input type="hidden" name="selectedCountry" value="LU">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Malta-EU.png" alt="Malta-eID"
th:attr="src=@{img/countries/Malta-EU.png},alt=#{gui.countryselection.country.mt.logo.alt}"/></a>
<input type="submit" value="Malta" th:attr="value=#{gui.countryselection.country.mt}">
<input type="hidden" name="selectedCountry" value="MT">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/TheNetherlands-EU_.png" alt="Netherlands-eID"
th:attr="src=@{img/countries/TheNetherlands-EU_.png},alt=#{gui.countryselection.country.nl.logo.alt}"/></a>
- <input type="submit" value="Netherlands" th:attr="value=#{gui.countryselection.country.nl}">
+ <input type="submit" value="Netherlands" th:attr="value=#{gui.countryselection.country.nl}">
<input type="hidden" name="selectedCountry" value="NL">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Poland-EU.png" alt="Poland-eID"
th:attr="src=@{img/countries/Poland-EU.png},alt=#{gui.countryselection.country.pl.logo.alt}"/></a>
<input type="submit" value="Poland" th:attr="value=#{gui.countryselection.country.pl}">
- <input type="hidden" name="selectedCountry" value="PL">
+ <input type="hidden" name="selectedCountry" value="PL">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Portugal-EU.png" alt="Portugal-eID"
- th:attr="src=@{img/countries/Portugal-EU.png},alt=#{gui.countryselection.country.pt.logo.alt}"/></a>
+ th:attr="src=@{img/countries/Portugal-EU.png},alt=#{gui.countryselection.country.pt.logo.alt}"/></a>
<input type="submit" value="Portugal" th:attr="value=#{gui.countryselection.country.pt}">
<input type="hidden" name="selectedCountry" value="PT">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Romania-EU.png" alt="Romania-eID"
- th:attr="src=@{img/countries/Romania-EU.png},alt=#{gui.countryselection.country.ro.logo.alt}"/></a>
+ th:attr="src=@{img/countries/Romania-EU.png},alt=#{gui.countryselection.country.ro.logo.alt}"/></a>
<input type="submit" value="Romania" th:attr="value=#{gui.countryselection.country.ro}">
<input type="hidden" name="selectedCountry" value="RO">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Slovakia-EU.png" alt="Slovakia-eID"
th:attr="src=@{img/countries/Slovakia-EU.png},alt=#{gui.countryselection.country.sk.logo.alt}"/></a>
<input type="submit" value="Slovakia" th:attr="value=#{gui.countryselection.country.sk}">
<input type="hidden" name="selectedCountry" value="SK">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Slovenia-EU.png" alt="Slovenia-eID"
th:attr="src=@{img/countries/Slovenia-EU.png},alt=#{gui.countryselection.country.si.logo.alt}"/></a>
<input type="submit" value="Slovenia" th:attr="value=#{gui.countryselection.country.si}">
<input type="hidden" name="selectedCountry" value="SI">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Spain-EU.png" alt="Spain-eID"
th:attr="src=@{img/countries/Spain-EU.png},alt=#{gui.countryselection.country.es.logo.alt}"/></a>
<input type="submit" value="Spain" th:attr="value=#{gui.countryselection.country.es}">
<input type="hidden" name="selectedCountry" value="ES">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/Sweden-EU.png" alt="Sweden-eID"
th:attr="src=@{img/countries/Sweden-EU.png},alt=#{gui.countryselection.country.se.logo.alt}"/></a>
<input type="submit" value="Sweden" th:attr="value=#{gui.countryselection.country.se}">
<input type="hidden" name="selectedCountry" value="SE">
- <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
+ <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint">
<a><img class="countryimage" src="$contextPath/img/countries/UnitedKingdom-EU.png" alt="UnitedKingdom-eID"
th:attr="src=@{img/countries/UnitedKingdom-EU.png},alt=#{gui.countryselection.country.uk.logo.alt}"/></a>
<input type="submit" value="United Kingdom" th:attr="value=#{gui.countryselection.country.uk}">
<input type="hidden" name="selectedCountry" value="UK">
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" />
</form>
-
- <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}">
- <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" th:attr="value=#{gui.countryselection.cancle}">
+
+ <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}">
+ <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" th:attr="value=#{gui.countryselection.cancel}">
<input type="hidden" name="stopAuthProcess" value="true" >
<input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}">
</form>