diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2015-04-20 13:45:24 +0200 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2015-04-20 13:45:24 +0200 | 
| commit | e449a5704e520ca00cbb0451e78f69c5bbd0144c (patch) | |
| tree | 3fc6271295eafff4282aeae9647873afe10f5e23 /id | |
| parent | 8e7d186bcc4846d5052327905ca669c21959456f (diff) | |
| download | moa-id-spss-e449a5704e520ca00cbb0451e78f69c5bbd0144c.tar.gz moa-id-spss-e449a5704e520ca00cbb0451e78f69c5bbd0144c.tar.bz2 moa-id-spss-e449a5704e520ca00cbb0451e78f69c5bbd0144c.zip | |
first fix to solve problems with errorhandling and process managment
Diffstat (limited to 'id')
18 files changed, 181 insertions, 80 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/TaskExecutionException.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/TaskExecutionException.java new file mode 100644 index 000000000..3e9f4cf14 --- /dev/null +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/TaskExecutionException.java @@ -0,0 +1,57 @@ +/* + * Copyright 2014 Federal Chancellery Austria + * MOA-ID has been developed in a cooperation between BRZ, the Federal + * Chancellery Austria - ICT staff unit, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * 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.gv.egovernment.moa.id.auth.modules; + +import at.gv.egovernment.moa.id.process.ProcessExecutionException; + +/** + * @author tlenz + * + */ +public class TaskExecutionException extends ProcessExecutionException { + +	private static final long serialVersionUID = 1L; +	Throwable originalException = null; +	 +	/** +	 * @param message +	 * @param cause +	 */ +	public TaskExecutionException(String message, Throwable cause) { +		super(message, cause); +		originalException = cause; +		 +	} + +	/** +	 * Get the original internal exception from task +	 *  +	 * @return the originalException +	 */ +	public Throwable getOriginalException() { +		return originalException; +	} +	 +	 +	 +} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CertificateReadRequestTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CertificateReadRequestTask.java index bc73a9f2f..ed3089a41 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CertificateReadRequestTask.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CertificateReadRequestTask.java @@ -2,6 +2,8 @@ package at.gv.egovernment.moa.id.auth.modules.internal.tasks;  import static at.gv.egovernment.moa.id.auth.MOAIDAuthConstants.*;
 +import java.io.IOException;
 +
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
 @@ -16,6 +18,7 @@ import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
  import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
 +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
  import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
  import at.gv.egovernment.moa.id.process.api.ExecutionContext;
  import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
 @@ -47,15 +50,12 @@ public class CertificateReadRequestTask extends AbstractAuthServletTask {  	@Override
  	public void execute(ExecutionContext executionContext, HttpServletRequest req, HttpServletResponse resp)
 -			throws Exception {
 +			throws TaskExecutionException {
  		// TODO[branch]: Foreign citizen or mandate mode; respond with IRR for certificates, dataURL = "/VerifyCertificate"
  		Logger.info("Send InfoboxReadRequest to BKU to get signer certificate.");
 -		setNoCachingHeaders(resp);
 -
 -		String pendingRequestID = null;
 -		
 +		setNoCachingHeaders(resp);		
  		try {
  			String sessionID = StringEscapeUtils.escapeHtml(req.getParameter(PARAM_SESSIONID));
 @@ -65,8 +65,6 @@ public class CertificateReadRequestTask extends AbstractAuthServletTask {  				throw new WrongParametersException("CertificateReadRequestTask", PARAM_SESSIONID, "auth.12");
  			}
 -			pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
 -
  			AuthenticationSession session = AuthenticationServer.getSession(sessionID);
  			boolean useMandate = session.getUseMandate();
 @@ -91,7 +89,11 @@ public class CertificateReadRequestTask extends AbstractAuthServletTask {  					AuthenticationServer.REQ_PROCESS_VALIDATOR_INPUT, "VerifyIdentityLink", dataurl);
  		} catch (MOAIDException ex) {
 -			handleError(null, ex, req, resp, pendingRequestID);
 +			throw new TaskExecutionException(ex.getMessage(), ex);
 +					
 +		} catch (IOException e) {
 +			throw new TaskExecutionException(e.getMessage(), e);
 +			
  		} finally {
  			ConfigurationDBUtils.closeSession();
  		}		
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CreateIdentityLinkFormTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CreateIdentityLinkFormTask.java index 4cd1ea94e..ee6f0d5a4 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CreateIdentityLinkFormTask.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CreateIdentityLinkFormTask.java @@ -15,6 +15,7 @@ import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
  import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
 +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
  import at.gv.egovernment.moa.id.auth.servlet.GenerateIFrameTemplateServlet;
  import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
  import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
 @@ -60,9 +61,8 @@ public class CreateIdentityLinkFormTask extends AbstractAuthServletTask {  	@Override
  	public void execute(ExecutionContext executionContext, HttpServletRequest req, HttpServletResponse resp)
 -			throws Exception {
 +			throws TaskExecutionException {
 -		String pendingRequestID = null;
  		String moasessionid = StringEscapeUtils.escapeHtml(ObjectUtils.defaultIfNull(req.getParameter(PARAM_SESSIONID), (String) executionContext.get(PARAM_SESSIONID)));
  		AuthenticationSession moasession = null;
  		try {
 @@ -72,9 +72,7 @@ public class CreateIdentityLinkFormTask extends AbstractAuthServletTask {  				throw new MOAIDException("auth.18", new Object[] {});
  			}
 -			try {
 -			
 -				pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(moasessionid);
 +			try {			
  				moasession = AuthenticationSessionStoreage.getSession(moasessionid);
  				AuthenticationSessionStoreage.changeSessionID(moasession);
  				executionContext.remove(PARAM_SESSIONID);
 @@ -100,14 +98,17 @@ public class CreateIdentityLinkFormTask extends AbstractAuthServletTask {  			}
  		} catch (WrongParametersException ex) {
 -			handleWrongParameters(ex, req, resp);
 +//			handleWrongParameters(ex, req, resp);
 +			throw new TaskExecutionException(ex.getMessage(), ex);
  		}
  		catch (MOAIDException ex) {
 -			handleError(null, ex, req, resp, pendingRequestID);
 +//			handleError(null, ex, req, resp, pendingRequestID);
 +			throw new TaskExecutionException(ex.getMessage(), ex);
  		} catch (Exception e) {
  			Logger.error("CreateIdentityLinkFormTask has an interal Error.", e);
 +			throw new TaskExecutionException(e.getMessage(), e);
  		}
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java index 4771628a3..6bf68e2eb 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java @@ -24,6 +24,7 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;  import at.gv.egovernment.moa.id.auth.exception.ParseException;
  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
  import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
 +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
  import at.gv.egovernment.moa.id.auth.parser.CreateXMLSignatureResponseParser;
  import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;
  import at.gv.egovernment.moa.id.client.SZRGWClientException;
 @@ -66,7 +67,7 @@ public class GetForeignIDTask extends AbstractAuthServletTask {  	@Override
  	public void execute(ExecutionContext executionContext, HttpServletRequest req, HttpServletResponse resp)
 -			throws Exception {
 +			throws TaskExecutionException {
  		Logger.debug("POST GetForeignIDServlet");
 @@ -76,9 +77,10 @@ public class GetForeignIDTask extends AbstractAuthServletTask {  		try {
  			parameters = getParameters(req);
 -		} catch (FileUploadException e) {
 +			
 +		} catch (FileUploadException | IOException e) {
  			Logger.error("Parsing mulitpart/form-data request parameters failed: " + e.getMessage());
 -			throw new IOException(e.getMessage());
 +			throw new TaskExecutionException("Parsing mulitpart/form-data request parameters failed", new IOException(e.getMessage()));
  		}
  		String sessionID = StringEscapeUtils.escapeHtml(req.getParameter(PARAM_SESSIONID));
 @@ -170,10 +172,11 @@ public class GetForeignIDTask extends AbstractAuthServletTask {  			}
  		} catch (MOAIDException ex) {
 -			handleError(null, ex, req, resp, pendingRequestID);
 +			throw new TaskExecutionException(ex.getMessage(), ex);
  		} catch (Exception e) {
  			Logger.error("GetForeignIDServlet has an interal Error.", e);
 +			throw new TaskExecutionException(e.getMessage(), e);
  		}
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java index f08f96782..4ff5672bd 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java @@ -21,6 +21,7 @@ import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
  import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
 +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
  import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
  import at.gv.egovernment.moa.id.config.ConnectionParameter;
  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
 @@ -62,7 +63,7 @@ public class GetMISSessionIDTask extends AbstractAuthServletTask {  	@Override
  	public void execute(ExecutionContext executionContext, HttpServletRequest req, HttpServletResponse resp)
 -			throws Exception {
 +			throws TaskExecutionException {
  		Logger.debug("POST GetMISSessionIDServlet");
 @@ -154,22 +155,23 @@ public class GetMISSessionIDTask extends AbstractAuthServletTask {  			Logger.debug("REDIRECT TO: " + redirectURL);
  		} catch (MOAIDException ex) {
 -			handleError(null, ex, req, resp, pendingRequestID);
 +			throw new TaskExecutionException(ex.getMessage(), ex);
  		} catch (GeneralSecurityException ex) {
 -			handleError(null, ex, req, resp, pendingRequestID);
 +			throw new TaskExecutionException(ex.getMessage(), ex);
  		} catch (PKIException e) {
 -			handleError(null, e, req, resp, pendingRequestID);
 +			throw new TaskExecutionException(e.getMessage(), e);
  		} catch (SAXException e) {
 -			handleError(null, e, req, resp, pendingRequestID);
 +			throw new TaskExecutionException(e.getMessage(), e);
  		} catch (ParserConfigurationException e) {
 -			handleError(null, e, req, resp, pendingRequestID);
 +			throw new TaskExecutionException(e.getMessage(), e);
  	    } catch (Exception e) {
  	    	Logger.error("MISMandateValidation has an interal Error.", e);
 +	    	throw new TaskExecutionException(e.getMessage(), e);
  	    }
  	    finally {
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareAuthBlockSignatureTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareAuthBlockSignatureTask.java index dcea3a1dd..3ae35bc24 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareAuthBlockSignatureTask.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareAuthBlockSignatureTask.java @@ -12,6 +12,7 @@ import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
  import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
 +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
  import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
  import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
 @@ -45,7 +46,7 @@ public class PrepareAuthBlockSignatureTask extends AbstractAuthServletTask {  	@Override
  	public void execute(ExecutionContext executionContext, HttpServletRequest req, HttpServletResponse resp)
 -			throws Exception {
 +			throws TaskExecutionException {
  		// note: code taken from at.gv.egovernment.moa.id.auth.servlet.VerifyIdentityLinkServlet
  		Logger.debug("Process IdentityLink");
 @@ -88,10 +89,11 @@ public class PrepareAuthBlockSignatureTask extends AbstractAuthServletTask {  					"VerifyIdentityLink");
  		} catch (MOAIDException ex) {
 -			handleError(null, ex, req, resp, pendingRequestID);
 +			throw new TaskExecutionException(ex.getMessage(), ex);
  		} catch (Exception e) {
  			Logger.error("IdentityLinkValidation has an interal Error.", e);
 +			throw new TaskExecutionException(e.getMessage(), e);
  		}
  		finally {
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyAuthenticationBlockTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyAuthenticationBlockTask.java index 1e1a4df89..64dcb0f41 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyAuthenticationBlockTask.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyAuthenticationBlockTask.java @@ -25,6 +25,7 @@ import at.gv.egovernment.moa.id.auth.exception.MISSimpleClientException;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
  import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
 +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
  import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
  import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
  import at.gv.egovernment.moa.id.config.ConnectionParameter;
 @@ -77,7 +78,7 @@ public class VerifyAuthenticationBlockTask extends AbstractAuthServletTask {  	@Override
  	public void execute(ExecutionContext executionContext, HttpServletRequest req, HttpServletResponse resp)
 -			throws Exception {
 +			throws TaskExecutionException {
  		// note: code taken from at.gv.egovernment.moa.id.auth.servlet.VerifyAuthenticationBlockServlet
 @@ -89,12 +90,13 @@ public class VerifyAuthenticationBlockTask extends AbstractAuthServletTask {  	    try 
  	    {
  	      parameters = getParameters(req);
 -	    } catch (FileUploadException e) 
 +	      
 +	    } catch (FileUploadException | IOException e) 
  	    {
  	      Logger.error("Parsing mulitpart/form-data request parameters failed: " + e.getMessage());
 -	      throw new IOException(e.getMessage());
 -	      
 +	      throw new TaskExecutionException("Parsing mulitpart/form-data request parameters failed", new IOException(e.getMessage()));
  	    }
 +	      
  			String sessionID = req.getParameter(PARAM_SESSIONID);
  			String createXMLSignatureResponse = (String)parameters.get(PARAM_XMLRESPONSE);
 @@ -219,19 +221,21 @@ public class VerifyAuthenticationBlockTask extends AbstractAuthServletTask {  			}
  			catch (MOAIDException ex) {
 -				handleError(null, ex, req, resp, pendingRequestID);
 +				throw new TaskExecutionException(ex.getMessage(), ex);
  			} catch (GeneralSecurityException e) {
 -				handleError(null, e, req, resp, pendingRequestID);
 +				throw new TaskExecutionException(e.getMessage(), e);
  			} catch (PKIException e) {
 -				handleError(null, e, req, resp, pendingRequestID);
 +				throw new TaskExecutionException(e.getMessage(), e);
  			} catch (TransformerException e) {
 -				handleError(null, e, req, resp, pendingRequestID);
 +				throw new TaskExecutionException(e.getMessage(), e);
  		    } catch (Exception e) {
  		    	Logger.error("AuthBlockValidation has an interal Error.", e);
 +		    	throw new TaskExecutionException(e.getMessage(), e);
 +		    	
  		    }
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyCertificateTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyCertificateTask.java index 32ea7fe3a..607641532 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyCertificateTask.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyCertificateTask.java @@ -19,6 +19,7 @@ import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
  import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
 +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
  import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
  import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
  import at.gv.egovernment.moa.id.process.api.ExecutionContext;
 @@ -57,30 +58,26 @@ public class VerifyCertificateTask extends AbstractAuthServletTask {  	@Override
  	public void execute(ExecutionContext executionContext, HttpServletRequest req, HttpServletResponse resp)
 -			throws Exception {
 +			throws TaskExecutionException {
  		// note: code taken from at.gv.egovernment.moa.id.auth.servlet.VerifyCertificateServlet
  		Logger.debug("POST VerifyCertificateServlet");
 -		
 -		String pendingRequestID = null;
 -		
 +				
  		Map<String, String> parameters;
  	    try 
  	    {
  	      parameters = getParameters(req);
 -	    } catch (FileUploadException e) 
 +	    } catch (FileUploadException | IOException e) 
  	    {
  	      Logger.error("Parsing mulitpart/form-data request parameters failed: " + e.getMessage());
 -	      throw new IOException(e.getMessage());
 -	     	}
 +	      throw new TaskExecutionException("Parsing mulitpart/form-data request parameters failed", new IOException(e.getMessage()));
 +	     }
  	    String sessionID = req.getParameter(PARAM_SESSIONID);
  	    // escape parameter strings
  		sessionID = StringEscapeUtils.escapeHtml(sessionID);
 -		
 -		pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
 -		
 +				
  	    AuthenticationSession session = null;
  	    try {
  	       // check parameter
 @@ -148,10 +145,12 @@ public class VerifyCertificateTask extends AbstractAuthServletTask {  	    	}	    		    	 
  	    }
  	    catch (MOAIDException ex) {
 -	      handleError(null, ex, req, resp, pendingRequestID);
 +	    	throw new TaskExecutionException(ex.getMessage(), ex);
  	    } catch (Exception e) {
  	    	Logger.error("CertificateValidation has an interal Error.", e);
 +	    	throw new TaskExecutionException(e.getMessage(), e);
 +	    	
  	    }
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyIdentityLinkTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyIdentityLinkTask.java index bf10b3681..44557453a 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyIdentityLinkTask.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyIdentityLinkTask.java @@ -16,6 +16,7 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;  import at.gv.egovernment.moa.id.auth.exception.ParseException;
  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
  import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
 +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
  import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
  import at.gv.egovernment.moa.id.process.api.ExecutionContext;
  import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
 @@ -50,7 +51,7 @@ public class VerifyIdentityLinkTask extends AbstractAuthServletTask {  	@Override
  	public void execute(ExecutionContext executionContext, HttpServletRequest req, HttpServletResponse resp)
 -			throws Exception {
 +			throws TaskExecutionException {
  		// note: code taken from at.gv.egovernment.moa.id.auth.servlet.VerifyIdentityLinkServlet
 @@ -59,13 +60,12 @@ public class VerifyIdentityLinkTask extends AbstractAuthServletTask {  		setNoCachingHeaders(resp);
  		Map<String, String> parameters;
 -		String pendingRequestID = null;
  		try {
  			parameters = getParameters(req);
  		} catch (Exception e) {
  			Logger.error("Parsing mulitpart/form-data request parameters failed: " + e.getMessage());
 -			throw new IOException(e.getMessage());
 +			throw new TaskExecutionException("Parsing mulitpart/form-data request parameters failed", new IOException(e.getMessage()));
  		}
  		try {
 @@ -75,8 +75,6 @@ public class VerifyIdentityLinkTask extends AbstractAuthServletTask {  			if (!ParamValidatorUtils.isValidSessionID(sessionID)) {
  				throw new WrongParametersException("VerifyIdentityLink", PARAM_SESSIONID, "auth.12");
  			}
 -			pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
 -
  			AuthenticationSession session = AuthenticationServer.getSession(sessionID);
  			boolean identityLinkAvailable = AuthenticationServer.getInstance().verifyIdentityLink(session, parameters) != null;
 @@ -85,13 +83,15 @@ public class VerifyIdentityLinkTask extends AbstractAuthServletTask {  			executionContext.put("identityLinkAvailable", identityLinkAvailable);
  		} catch (ParseException ex) {
 -			handleError(null, ex, req, resp, pendingRequestID);
 +			throw new TaskExecutionException(ex.getMessage(), ex);
  		} catch (MOAIDException ex) {
 -			handleError(null, ex, req, resp, pendingRequestID);
 +			throw new TaskExecutionException(ex.getMessage(), ex);
  		} catch (Exception e) {
  			Logger.error("IdentityLinkValidation has an interal Error.", e);
 +			throw new TaskExecutionException(e.getMessage(), e);
 +			
  		}
  		finally {
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AuthServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AuthServlet.java index 331a7653a..c4c4b2691 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AuthServlet.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AuthServlet.java @@ -77,9 +77,11 @@ import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;  import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException;  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException; +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;  import at.gv.egovernment.moa.id.config.ConfigurationException;  import at.gv.egovernment.moa.id.entrypoints.DispatcherServlet;  import at.gv.egovernment.moa.id.process.ProcessEngine; +import at.gv.egovernment.moa.id.process.ProcessExecutionException;  import at.gv.egovernment.moa.id.storage.DBExceptionStoreImpl;  import at.gv.egovernment.moa.id.storage.IExceptionStore;  import at.gv.egovernment.moa.id.util.ServletUtils; @@ -185,29 +187,36 @@ public class AuthServlet extends HttpServlet implements MOAIDAuthConstants {  	protected void handleError(String errorMessage, Throwable exceptionThrown,  			HttpServletRequest req, HttpServletResponse resp, String pendingRequestID) { -		if (null != errorMessage) { -			Logger.error(errorMessage); -			req.setAttribute("ErrorMessage", errorMessage); -		} - -		if (null != exceptionThrown) { -			if (null == errorMessage) -				errorMessage = exceptionThrown.getMessage(); -			Logger.error(errorMessage, exceptionThrown); -			req.setAttribute("ExceptionThrown", exceptionThrown); -		} - -		if (Logger.isDebugEnabled()) { -			req.setAttribute("LogLevel", "debug"); +		Throwable loggedException = null; +		 +		if (exceptionThrown != null  +				&& exceptionThrown instanceof ProcessExecutionException) { +			ProcessExecutionException procExc =  +					(ProcessExecutionException) exceptionThrown; +			if (procExc.getCause() != null &&  +					procExc.getCause() instanceof TaskExecutionException) { +				TaskExecutionException taskExc = (TaskExecutionException) procExc.getCause(); +				loggedException = taskExc.getOriginalException();	 +				if (Logger.isDebugEnabled() || Logger.isTraceEnabled()) { +					Logger.error(exceptionThrown.getMessage(), exceptionThrown); +					 +				} else +					Logger.error(exceptionThrown.getMessage()); +								 +			}			  		} +		 +		if (loggedException == null) +			loggedException = exceptionThrown; +		 -		if (!(exceptionThrown instanceof MOAIDException)) { -			Logger.error("Receive an internal error: Message=" + exceptionThrown.getMessage(), exceptionThrown); +		if (!(loggedException instanceof MOAIDException)) { +			Logger.error("Receive an internal error: Message=" + loggedException.getMessage(), loggedException);  		}  		IExceptionStore store = DBExceptionStoreImpl.getStore(); -		String id = store.storeException(exceptionThrown); +		String id = store.storeException(loggedException);  		if (id != null && MiscUtil.isNotEmpty(pendingRequestID)) { @@ -228,7 +237,7 @@ public class AuthServlet extends HttpServlet implements MOAIDAuthConstants {  		} else {  			//Exception can not be stored in database -			handleErrorNoRedirect(errorMessage, exceptionThrown, req, resp); +			handleErrorNoRedirect(errorMessage, loggedException, req, resp);  		}  	} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/ProcessEngineSignalServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/ProcessEngineSignalServlet.java index d670cbe8a..43b6c03d4 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/ProcessEngineSignalServlet.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/ProcessEngineSignalServlet.java @@ -13,6 +13,7 @@ import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
  import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
 +import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
  import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
  /**
 @@ -54,7 +55,8 @@ public class ProcessEngineSignalServlet extends AuthServlet {  	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  		String sessionID = StringEscapeUtils.escapeHtml(getMoaSessionId(req));
 -		setNoCachingHeaders(resp);
 +		setNoCachingHeaders(resp);		
 +		String pendingRequestID = null;
  		try {
  			if (sessionID == null) {
 @@ -62,6 +64,7 @@ public class ProcessEngineSignalServlet extends AuthServlet {  			}
  			// retrieve moa session
 +			pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
  			AuthenticationSession session = AuthenticationServer.getSession(sessionID);
  			// process instance is mandatory
 @@ -73,7 +76,7 @@ public class ProcessEngineSignalServlet extends AuthServlet {  			getProcessEngine().signal(session.getProcessInstanceId());
  		} catch (Exception ex) {
 -			handleError(null, ex, req, resp, null);
 +			handleError(null, ex, req, resp, pendingRequestID);
  		} finally {
  			MOASessionDBUtils.closeSession();
  		}
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/ProcessEngineImpl.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/ProcessEngineImpl.java index 0ffa22ec3..096e5ee9e 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/ProcessEngineImpl.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/ProcessEngineImpl.java @@ -13,6 +13,7 @@ import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import org.slf4j.MDC; +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;  import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;  import at.gv.egovernment.moa.id.process.api.ExecutionContext;  import at.gv.egovernment.moa.id.process.api.ExpressionEvaluationContext; diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/api/Task.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/api/Task.java index 6401b1d5d..343b8fe0c 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/api/Task.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/api/Task.java @@ -1,5 +1,7 @@  package at.gv.egovernment.moa.id.process.api; +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException; +  /**   * Represents a single task to be performed upon process execution. @@ -16,6 +18,6 @@ public interface Task {  	 *            Provides execution related information.  	 * @throws Exception An exception upon task execution.  	 */ -	void execute(ExecutionContext executionContext) throws Exception; +	void execute(ExecutionContext executionContext) throws TaskExecutionException;  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/springweb/MoaIdTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/springweb/MoaIdTask.java index bae6391ec..fb75fc8d7 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/springweb/MoaIdTask.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/springweb/MoaIdTask.java @@ -8,6 +8,7 @@ import org.springframework.web.context.request.RequestContextHolder;  import org.springframework.web.context.request.ServletRequestAttributes;  import org.springframework.web.filter.RequestContextFilter; +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;  import at.gv.egovernment.moa.id.process.api.ExecutionContext;  import at.gv.egovernment.moa.id.process.api.Task; @@ -52,10 +53,10 @@ public abstract class MoaIdTask implements Task {  	 *             Thrown in case of error executing the task.  	 */  	public abstract void execute(ExecutionContext executionContext, HttpServletRequest request, -			HttpServletResponse response) throws Exception; +			HttpServletResponse response) throws TaskExecutionException;  	@Override -	public void execute(ExecutionContext executionContext) throws Exception { +	public void execute(ExecutionContext executionContext) throws TaskExecutionException {  		RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();  		if (requestAttributes != null && requestAttributes instanceof ServletRequestAttributes) {  			HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); diff --git a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/CreateSAML1AssertionTask.java b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/CreateSAML1AssertionTask.java index 7e56071bd..ebda3c5c3 100644 --- a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/CreateSAML1AssertionTask.java +++ b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/CreateSAML1AssertionTask.java @@ -1,5 +1,6 @@  package at.gv.egovernment.moa.id.process.spring.test.task; +import java.io.IOException;  import java.io.InputStream;  import java.nio.charset.Charset;  import java.util.Objects; @@ -8,6 +9,7 @@ import org.apache.commons.io.IOUtils;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;  import at.gv.egovernment.moa.id.process.api.ExecutionContext;  import at.gv.egovernment.moa.id.process.api.Task; @@ -37,7 +39,7 @@ public class CreateSAML1AssertionTask implements Task {  	private Logger log = LoggerFactory.getLogger(getClass());  	@Override -	public void execute(ExecutionContext executionContext) throws Exception { +	public void execute(ExecutionContext executionContext) throws TaskExecutionException {  		Objects.requireNonNull(executionContext.get("IdentityLink"));  		assert (Boolean.TRUE.equals(Objects.requireNonNull(executionContext.get("isIdentityLinkValidated"))));  		Objects.requireNonNull(executionContext.get("SignedAuthBlock")); @@ -47,6 +49,9 @@ public class CreateSAML1AssertionTask implements Task {  		try (InputStream in = getClass().getResourceAsStream("SAML1Assertion.xml")) {  			executionContext.put("SAML1Assertion", IOUtils.toString(in, Charset.forName("UTF-8"))); +			 +		} catch (IOException e) { +			throw new TaskExecutionException("", e);  		}  	} diff --git a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/GetIdentityLinkTask.java b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/GetIdentityLinkTask.java index 412fb0123..bd08ec6a1 100644 --- a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/GetIdentityLinkTask.java +++ b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/GetIdentityLinkTask.java @@ -9,6 +9,7 @@ import org.apache.commons.io.IOUtils;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;  import at.gv.egovernment.moa.id.process.api.ExecutionContext;  import at.gv.egovernment.moa.id.process.api.Task; @@ -37,13 +38,16 @@ public class GetIdentityLinkTask implements Task {  	private Logger log = LoggerFactory.getLogger(getClass());  	@Override -	public void execute(ExecutionContext executionContext) throws IOException { +	public void execute(ExecutionContext executionContext) throws TaskExecutionException {  		Objects.requireNonNull(executionContext.get("bkuURL"));  		log.debug("Using bkuURL in order to retrieve IdentityLink.");  		try (InputStream in = getClass().getResourceAsStream("IdentityLink_Max_Mustermann.xml")) {  			executionContext.put("IdentityLink", IOUtils.toString(in, Charset.forName("UTF-8"))); +			 +		} catch (IOException e) { +			throw new TaskExecutionException("", e);  		}  	} diff --git a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/SignAuthBlockTask.java b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/SignAuthBlockTask.java index 8099c0f98..8f9b72cea 100644 --- a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/SignAuthBlockTask.java +++ b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/SignAuthBlockTask.java @@ -1,5 +1,6 @@  package at.gv.egovernment.moa.id.process.spring.test.task; +import java.io.IOException;  import java.io.InputStream;  import java.nio.charset.Charset;  import java.util.Objects; @@ -8,6 +9,7 @@ import org.apache.commons.io.IOUtils;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;  import at.gv.egovernment.moa.id.process.api.ExecutionContext;  import at.gv.egovernment.moa.id.process.api.Task; @@ -38,7 +40,7 @@ public class SignAuthBlockTask implements Task {  	private Logger log = LoggerFactory.getLogger(getClass());  	@Override -	public void execute(ExecutionContext executionContext) throws Exception { +	public void execute(ExecutionContext executionContext) throws TaskExecutionException {  		Objects.requireNonNull(executionContext.get("IdentityLink"));  		assert (Boolean.TRUE.equals(Objects.requireNonNull(executionContext.get("isIdentityLinkValidated"))));  		Objects.requireNonNull(executionContext.get("bkuURL")); @@ -46,6 +48,9 @@ public class SignAuthBlockTask implements Task {  		log.debug("Using validated IdentityLink and bkuURL in order to sign auth block.");  		try (InputStream in = getClass().getResourceAsStream("SignedAuthBlock.xml")) {  			executionContext.put("SignedAuthBlock", IOUtils.toString(in, Charset.forName("UTF-8"))); +		} catch (IOException e) { +			throw new TaskExecutionException("", e); +			  		}  	} diff --git a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/ValidateSignedAuthBlockTask.java b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/ValidateSignedAuthBlockTask.java index 07b2ea69c..cece373d4 100644 --- a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/ValidateSignedAuthBlockTask.java +++ b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/task/ValidateSignedAuthBlockTask.java @@ -5,6 +5,7 @@ import java.util.Objects;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; +import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;  import at.gv.egovernment.moa.id.process.api.ExecutionContext;  import at.gv.egovernment.moa.id.process.api.Task; @@ -33,7 +34,7 @@ public class ValidateSignedAuthBlockTask implements Task {  	private Logger log = LoggerFactory.getLogger(getClass());  	@Override -	public void execute(ExecutionContext executionContext) throws Exception { +	public void execute(ExecutionContext executionContext) throws TaskExecutionException {  		Objects.requireNonNull(executionContext.get("IdentityLink"));  		assert (Boolean.TRUE.equals(Objects.requireNonNull(executionContext.get("isIdentityLinkValidated"))));  		Objects.requireNonNull(executionContext.get("SignedAuthBlock")); | 
