From dc8587693201e34fe0f7a87b3e401fac4325ce04 Mon Sep 17 00:00:00 2001 From: Thomas Lenz Date: Fri, 3 May 2019 06:59:13 +0200 Subject: update process finalization and update pendingReqIdGenerationStrategy --- .../tasks/FinalizeAuthenticationTask.java | 29 ++++------------------ .../tasks/RestartAuthProzessManagement.java | 18 +++++++------- 2 files changed, 14 insertions(+), 33 deletions(-) (limited to 'eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller') diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/tasks/FinalizeAuthenticationTask.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/tasks/FinalizeAuthenticationTask.java index eff6b631..b12a69b2 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/tasks/FinalizeAuthenticationTask.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/tasks/FinalizeAuthenticationTask.java @@ -26,20 +26,15 @@ *******************************************************************************/ package at.gv.egiz.eaaf.core.impl.idp.controller.tasks; -import java.io.Serializable; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cglib.proxy.Dispatcher; import org.springframework.stereotype.Component; import at.gv.egiz.eaaf.core.api.data.EAAFConstants; import at.gv.egiz.eaaf.core.api.idp.auth.IAuthenticationManager; -import at.gv.egiz.eaaf.core.api.idp.auth.services.IProtocolAuthenticationService; 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; @@ -53,9 +48,7 @@ import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; public class FinalizeAuthenticationTask extends AbstractAuthServletTask { private static final Logger log = LoggerFactory.getLogger(FinalizeAuthenticationTask.class); - - @Autowired(required=true) IProtocolAuthenticationService protAuchService; - + /* (non-Javadoc) * @see at.gv.egovernment.moa.id.process.springweb.MoaIdTask#execute(at.gv.egovernment.moa.id.process.api.ExecutionContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ @@ -68,25 +61,13 @@ public class FinalizeAuthenticationTask extends AbstractAuthServletTask { //set pending request to authenticated pendingReq.setAuthenticated(true); revisionsLogger.logEvent(pendingReq, IAuthenticationManager.EVENT_AUTHENTICATION_PROCESS_FINISHED); + performRedirectToProtocolFinialization(executionContext, pendingReq, request, response); - - Object frontChannelRedirectFlagObj = executionContext.get(EAAFConstants.PROCESS_ENGINE_REQUIRES_NO_POSTAUTH_REDIRECT); - if (frontChannelRedirectFlagObj != null && frontChannelRedirectFlagObj instanceof Boolean && - (Boolean)frontChannelRedirectFlagObj) { - log.info("AuthProcess finished. Forward to Protocol finalization."); - protAuchService.finalizeAuthentication(request, response, pendingReq); - - } else { - log.info("AuthProcess finished. Redirect to Protocol Dispatcher."); - requestStoreage.storePendingRequest(pendingReq); - performRedirectToProtocolFinialization(pendingReq, response); - - } - - } catch (EAAFException e) { + + } catch (final EAAFException e) { throw new TaskExecutionException(pendingReq, e.getMessage(), e); - } catch (Exception e) { + } catch (final Exception e) { log.warn("FinalizeAuthenticationTask has an internal error", e); throw new TaskExecutionException(pendingReq, e.getMessage(), e); diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/tasks/RestartAuthProzessManagement.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/tasks/RestartAuthProzessManagement.java index 7ecc7425..1e5b63a2 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/tasks/RestartAuthProzessManagement.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/tasks/RestartAuthProzessManagement.java @@ -65,13 +65,13 @@ public class RestartAuthProzessManagement extends AbstractAuthServletTask { if (this.pendingReq.isAbortedByUser()) { log.debug("AuthProcess was stopped. Forward to finalization ... "); - performRedirectToProtocolFinialization(pendingReq, response); + performRedirectToProtocolFinialization(executionContext, pendingReq, request, response); } else { //create a new execution context and copy all elements to new context - ExecutionContext newec = new ExecutionContextImpl(); - Set entries = executionContext.keySet(); - for (String key : entries) { + final ExecutionContext newec = new ExecutionContextImpl(); + final Set entries = executionContext.keySet(); + for (final String key : entries) { newec.put(key, executionContext.get(key)); } @@ -79,13 +79,13 @@ public class RestartAuthProzessManagement extends AbstractAuthServletTask { log.debug("Select new auth.-process and restart restart process-engine ... "); // select and create new process instance - String processDefinitionId = ModuleRegistration.getInstance().selectProcess(newec); + final String processDefinitionId = ModuleRegistration.getInstance().selectProcess(newec); if (processDefinitionId == null) { log.warn("No suitable authentication process found for SessionID " + pendingReq.getPendingRequestId()); throw new EAAFException("process.02", new Object[] { pendingReq.getPendingRequestId()}); } - String processInstanceId = processEngine.createProcessInstance(processDefinitionId, newec); + final String processInstanceId = processEngine.createProcessInstance(processDefinitionId, newec); // keep process instance id in moa session ((RequestImpl)pendingReq).setProcessInstanceId(processInstanceId); @@ -94,7 +94,7 @@ public class RestartAuthProzessManagement extends AbstractAuthServletTask { try { requestStoreage.storePendingRequest(pendingReq); - } catch (EAAFException e) { + } catch (final EAAFException e) { log.error("Database Error! MOASession is not stored!"); throw new EAAFException("internal.02", null); @@ -107,10 +107,10 @@ public class RestartAuthProzessManagement extends AbstractAuthServletTask { } - } catch (EAAFException e) { + } catch (final EAAFException e) { throw new TaskExecutionException(pendingReq, e.getMessage(), e); - } catch (Exception e) { + } catch (final Exception e) { log.warn("RestartAuthProzessManagement has an internal error", e); throw new TaskExecutionException(pendingReq, e.getMessage(), e); -- cgit v1.2.3 From 2e921528557a23b96fb6b52b2b53a28048a826fd Mon Sep 17 00:00:00 2001 From: Thomas Lenz Date: Fri, 3 May 2019 20:54:32 +0200 Subject: update abstract protocols/RequestImpl.java to inject an external generated transactionId --- .../impl/idp/controller/protocols/RequestImpl.java | 31 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller') diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/protocols/RequestImpl.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/protocols/RequestImpl.java index 5667fad7..f037f4ab 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/protocols/RequestImpl.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/protocols/RequestImpl.java @@ -35,13 +35,13 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import javax.naming.ConfigurationException; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; import at.gv.egiz.eaaf.core.api.IRequest; import at.gv.egiz.eaaf.core.api.data.EAAFConstants; @@ -96,14 +96,37 @@ public abstract class RequestImpl implements IRequest, Serializable{ private final Map genericDataStorage = new HashMap(); + /** + * Initialize this pendingRequest object + * + * @param req {@link HttpServletRequest} + * @param authConfig {@link IConfiguration} + * @throws EAAFException + * + */ + public final void initialize(HttpServletRequest req, IConfiguration authConfig) throws EAAFException { + initialize(req, authConfig, null); + + } /** - * @throws ConfigurationException + * Initialize this pendingRequest object + * + * @param req {@link HttpServletRequest} + * @param authConfig {@link IConfiguration} + * @param transactionId transactionId that should be used in this pendingRequest for logging. If 'null' a new one will be generated + * + * @throws EAAFException * */ - public final void initialize(HttpServletRequest req, IConfiguration authConfig) throws EAAFException { + public final void initialize(@NonNull HttpServletRequest req, @NonNull IConfiguration authConfig, @Nullable String transactionId) throws EAAFException { + //use external transactionId or create new one if empty or null + if (StringUtils.isNotEmpty(transactionId)) + uniqueTransactionIdentifer = transactionId; + else + uniqueTransactionIdentifer = Random.nextLongRandom(); + //set unique transaction identifier for logging - uniqueTransactionIdentifer = Random.nextLongRandom(); TransactionIDUtils.setTransactionId(uniqueTransactionIdentifer); //initialize session object -- cgit v1.2.3