aboutsummaryrefslogtreecommitdiff
path: root/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java')
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java32
1 files changed, 19 insertions, 13 deletions
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
index 135eeec1..38a7076a 100644
--- 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
@@ -53,7 +53,8 @@ import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.TRANSIT
* Searches registers (ERnP and ZMR) after alternative eIDAS authn, before adding person to SZR.
* Input:
* <ul>
- * <li>{@link Constants#DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE}</li>
+ * <li>{@link Constants#DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE} data from the alternative eIDAS authn</li>
+ * <li>{@link Constants#DATA_SIMPLE_EIDAS} data from the initial eIDAS authn</li>
* </ul>
* Output:
* <ul>
@@ -94,8 +95,10 @@ public class AlternativeSearchTask extends AbstractAuthServletTask {
public void execute(ExecutionContext executionContext, HttpServletRequest request, HttpServletResponse response)
throws TaskExecutionException {
try {
- final SimpleEidasData eidasData = convertEidasAttrToSimpleData();
- step11RegisterSearchWithPersonIdentifier(executionContext, eidasData);
+ final SimpleEidasData altEidasData = convertEidasAttrToSimpleData();
+ final SimpleEidasData initialEidasData = MatchingTaskUtils.getInitialEidasData(pendingReq);
+ // TODO Verify that altEidasData and initialEidasData "match"?
+ step11RegisterSearchWithPersonIdentifier(executionContext, altEidasData, initialEidasData);
} catch (WorkflowException e) {
throw new TaskExecutionException(pendingReq, "Initial search failed", e);
} catch (final Exception e) {
@@ -105,15 +108,17 @@ public class AlternativeSearchTask extends AbstractAuthServletTask {
}
private void step11RegisterSearchWithPersonIdentifier(
- ExecutionContext executionContext, SimpleEidasData eidasData) throws WorkflowException, EaafStorageException {
+ ExecutionContext executionContext, SimpleEidasData initialEidasData, SimpleEidasData altEidasData)
+ throws WorkflowException, EaafStorageException {
try {
log.trace("Starting step11RegisterSearchWithPersonIdentifier");
- RegisterStatusResults searchResult = registerSearchService.searchWithPersonIdentifier(eidasData);
+ RegisterStatusResults searchResult = registerSearchService.searchWithPersonIdentifier(altEidasData);
int resultCount = searchResult.getResultCount();
if (resultCount == 0) {
- step12CountrySpecificSearch(executionContext, searchResult.getOperationStatus(), eidasData);
+ step12CountrySpecificSearch(executionContext, searchResult.getOperationStatus(), initialEidasData,
+ altEidasData);
} else if (resultCount == 1) {
- foundMatchFinalizeTask(searchResult, eidasData);
+ foundMatchFinalizeTask(searchResult, altEidasData);
} else {
throw new WorkflowException("step11RegisterSearchWithPersonIdentifier",
"More than one entry with unique personal-identifier", true);
@@ -125,21 +130,22 @@ public class AlternativeSearchTask extends AbstractAuthServletTask {
}
}
- private void step12CountrySpecificSearch(
- ExecutionContext executionContext, RegisterOperationStatus registerOperationStatus, SimpleEidasData eidasData)
+ private void step12CountrySpecificSearch(ExecutionContext executionContext,
+ RegisterOperationStatus registerOperationStatus,
+ SimpleEidasData initialEidasData,
+ SimpleEidasData altEidasData)
throws EaafStorageException, WorkflowException {
log.trace("Starting 'step12CountrySpecificSearch' ... ");
RegisterStatusResults searchResult = registerSearchService.searchWithCountrySpecifics(
- registerOperationStatus, eidasData);
+ registerOperationStatus, altEidasData);
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);
+ registerSearchService.step7bKittProcess(searchResult, initialEidasData, altEidasData);
+ foundMatchFinalizeTask(searchResult, altEidasData);
} else {
throw new WorkflowException("step12CountrySpecificSearch",
"More than one entry with unique country-specific information", true);