diff options
Diffstat (limited to 'eaaf_core/src/main')
| -rw-r--r-- | eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfiguration.java | 18 | ||||
| -rw-r--r-- | eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfigurationFactory.java | 2 | ||||
| -rw-r--r-- | eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIFormBuilder.java | 38 | ||||
| -rw-r--r-- | eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/ISpringMVCGUIFormBuilder.java | 5 | ||||
| -rw-r--r-- | eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IVelocityGUIBuilderConfiguration.java | 22 | ||||
| -rw-r--r-- | eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IVelocityGuiFormBuilder.java | 66 | ||||
| -rw-r--r-- | eaaf_core/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFIllegalStateException.java | 5 | ||||
| -rw-r--r-- | eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractVelocityGUIFormBuilderImpl.java (renamed from eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractGUIFormBuilderImpl.java) | 68 | ||||
| -rw-r--r-- | eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/ProtocolAuthenticationService.java | 20 | 
9 files changed, 168 insertions, 76 deletions
| diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfiguration.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfiguration.java index 483ea6ef..82d82a3a 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfiguration.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfiguration.java @@ -26,7 +26,6 @@   *******************************************************************************/  package at.gv.egiz.eaaf.core.api.gui; -import java.io.InputStream;  import java.util.Map;  /** @@ -50,23 +49,6 @@ public interface IGUIBuilderConfiguration {  	 */  	public Map<String, Object> getViewParameters(); -	 -	/** -	 * Get a specific classpath template-directory prefix, which is used  -	 *  to load a template from classpath by using <code>ClassLoader.getResourceAsStream(...)</code>   -	 *  -	 * @return Classpath directory, or null if the default directory should be used -	 */ -	public String getClasspathTemplateDir(); -		 -	/**  -	 * Get the GUI template with a specific name -	 *  -	 * @param viewName Name of the template -	 * @return Tempate as <code>InputStream</code>, or null if default getTemplate method should be used   -	 */ -	public InputStream getTemplate(String viewName); -	  	/**  	 * Get the contentType, which should be set in HTTP response  	 * <br><br> diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfigurationFactory.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfigurationFactory.java index a569f507..1776a630 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfigurationFactory.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIBuilderConfigurationFactory.java @@ -48,7 +48,7 @@ public interface IGUIBuilderConfigurationFactory {  	 * @return  	 * @throws MalformedURLException If configRootContextDir is not a valid URI  	 */ -	public IGUIBuilderConfiguration getSPSpecificSAML2PostConfiguration(IRequest pendingReq, String viewName, URI configRootContextDir) +	public IVelocityGUIBuilderConfiguration getSPSpecificSAML2PostConfiguration(IRequest pendingReq, String viewName, URI configRootContextDir)  			throws MalformedURLException;  } diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIFormBuilder.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIFormBuilder.java index aa7fd99b..7730e516 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIFormBuilder.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGUIFormBuilder.java @@ -26,12 +26,9 @@   *******************************************************************************/  package at.gv.egiz.eaaf.core.api.gui; -import java.io.InputStream; - +import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; -import org.apache.velocity.VelocityContext; -  import at.gv.egiz.eaaf.core.exceptions.GUIBuildException;  /** @@ -40,55 +37,38 @@ import at.gv.egiz.eaaf.core.exceptions.GUIBuildException;   */  public interface IGUIFormBuilder { +	 +	  	/**  	 * Parse a GUI template, with parameters into a http servlet-response   	 * and use the default http-response content-type.  	 * <br><br>  	 *  The parser use the <code>VelocityEngine</code> as internal template evaluator.   	 *  +     * @param httpReq http-request object  	 * @param httpResp http-response object -	 * @param viewName Name of the template (with suffix), which should be used.  -	 *    The template is selected by using the <code>getTemplate(String viewName)</code> method -	 * @param viewParams Map of parameters, which should be added to template +     * @param config Configuration object  	 * @param loggerName String, which should be used from logger  	 *   	 * @throws GUIBuildException  	 */ -	public void build(HttpServletResponse httpResp, IGUIBuilderConfiguration config, String loggerName) throws GUIBuildException; +	public void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGUIBuilderConfiguration config, String loggerName) throws GUIBuildException;  	/**  	 * Parse a GUI template, with parameters into a http servlet-response.  	 * <br><br>  	 *  The parser use the <code>VelocityEngine</code> as internal template evaluator.   	 *  +	 * @param httpReq http-request object  	 * @param httpResp http-response object -	 * @param viewName Name of the template (with suffix), which should be used.  -	 *    The template is selected by using the <code>getTemplate(String viewName)</code> method -	 * @param viewParams Map of parameters, which should be added to template +	 * @param config Configuration object  	 * @param contentType http-response content-type, which should be set  	 * @param loggerName String, which should be used from logger  	 *   	 * @throws GUIBuildException  	 */ -	void build(HttpServletResponse httpResp, IGUIBuilderConfiguration config, String contentType, +	void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGUIBuilderConfiguration config, String contentType,  			String loggerName) throws GUIBuildException; -	 -	/** -	 * Generate a new {@link VelocityContext} and populate it with MOA-ID GUI parameters -	 *  -	 * @param config -	 * @return -	 */ -	public VelocityContext generateVelocityContextFromConfiguration(IGUIBuilderConfiguration config); -	 -	/** -	 * Load the template from different resources -	 *  -	 * @param config -	 * @return An {@link InputStream} but never null. The {@link InputStream} had to be closed be the invoking method -	 * @throws GUIBuildException -	 */ -	public InputStream getTemplateInputStream(IGUIBuilderConfiguration config) throws GUIBuildException;  } diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/ISpringMVCGUIFormBuilder.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/ISpringMVCGUIFormBuilder.java new file mode 100644 index 00000000..e759b253 --- /dev/null +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/ISpringMVCGUIFormBuilder.java @@ -0,0 +1,5 @@ +package at.gv.egiz.eaaf.core.api.gui; + +public interface ISpringMVCGUIFormBuilder extends IGUIFormBuilder{ + +} diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IVelocityGUIBuilderConfiguration.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IVelocityGUIBuilderConfiguration.java new file mode 100644 index 00000000..e56bf1af --- /dev/null +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IVelocityGUIBuilderConfiguration.java @@ -0,0 +1,22 @@ +package at.gv.egiz.eaaf.core.api.gui; + +import java.io.InputStream; + +public interface IVelocityGUIBuilderConfiguration extends IGUIBuilderConfiguration { +	/** +	 * Get a specific classpath template-directory prefix, which is used  +	 *  to load a template from classpath by using <code>ClassLoader.getResourceAsStream(...)</code>   +	 *  +	 * @return Classpath directory, or null if the default directory should be used +	 */ +	public String getClasspathTemplateDir(); +		 +	/**  +	 * Get the GUI template with a specific name +	 *  +	 * @param viewName Name of the template +	 * @return Tempate as <code>InputStream</code>, or null if default getTemplate method should be used   +	 */ +	public InputStream getTemplate(String viewName); +	 +} diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IVelocityGuiFormBuilder.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IVelocityGuiFormBuilder.java new file mode 100644 index 00000000..103b38d9 --- /dev/null +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/gui/IVelocityGuiFormBuilder.java @@ -0,0 +1,66 @@ +package at.gv.egiz.eaaf.core.api.gui; + +import java.io.InputStream; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.velocity.VelocityContext; + +import at.gv.egiz.eaaf.core.exceptions.GUIBuildException; + +public interface IVelocityGuiFormBuilder extends IGUIFormBuilder { + +	 +	/** +	 * Generate a new {@link VelocityContext} and populate it with MOA-ID GUI parameters +	 *  +	 * @param config +	 * @return +	 */ +	public VelocityContext generateVelocityContextFromConfiguration(IVelocityGUIBuilderConfiguration config); +	 + +	/** +	 * Load the template from different resources +	 *  +	 * @param config +	 * @return An {@link InputStream} but never null. The {@link InputStream} had to be closed be the invoking method +	 * @throws GUIBuildException +	 */ +	public InputStream getTemplateInputStream(IVelocityGUIBuilderConfiguration config) throws GUIBuildException; + + +	/** +	 * Parse a GUI template, with parameters into a http servlet-response  +	 * and use the default http-response content-type. +	 * <br><br> +	 *  The parser use the <code>VelocityEngine</code> as internal template evaluator.  +	 *  +     * @param httpReq http-request object +	 * @param httpResp http-response object +     * @param config Configuration object +	 * @param loggerName String, which should be used from logger +	 *  +	 * @throws GUIBuildException +	 */ +	void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IVelocityGUIBuilderConfiguration config, String loggerName) +			throws GUIBuildException; + + +	/** +	 * Parse a GUI template, with parameters into a http servlet-response. +	 * <br><br> +	 *  The parser use the <code>VelocityEngine</code> as internal template evaluator.  +	 *  +	 * @param httpReq http-request object +	 * @param httpResp http-response object +	 * @param config Configuration object +	 * @param contentType http-response content-type, which should be set +	 * @param loggerName String, which should be used from logger +	 *  +	 * @throws GUIBuildException +	 */ +	void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IVelocityGUIBuilderConfiguration config, String contentType, +			String loggerName) throws GUIBuildException; +} diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFIllegalStateException.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFIllegalStateException.java index cb08a68d..95688260 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFIllegalStateException.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/exceptions/EAAFIllegalStateException.java @@ -35,5 +35,10 @@ public class EAAFIllegalStateException extends EAAFException {  		super(IStatusMessenger.CODES_INTERNAL_ILLEGAL_STATE, params);  	} +	 +	public EAAFIllegalStateException(Object[] params, Throwable e) { +		super(IStatusMessenger.CODES_INTERNAL_ILLEGAL_STATE, params, e); +		 +	}  } diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractGUIFormBuilderImpl.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractVelocityGUIFormBuilderImpl.java index 7273ccc8..65e13b5a 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractGUIFormBuilderImpl.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractVelocityGUIFormBuilderImpl.java @@ -35,6 +35,7 @@ import java.util.Iterator;  import java.util.Map;  import java.util.Map.Entry; +import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import org.apache.commons.lang3.StringUtils; @@ -45,7 +46,8 @@ import org.slf4j.LoggerFactory;  import at.gv.egiz.eaaf.core.api.data.EAAFConstants;  import at.gv.egiz.eaaf.core.api.gui.IGUIBuilderConfiguration; -import at.gv.egiz.eaaf.core.api.gui.IGUIFormBuilder; +import at.gv.egiz.eaaf.core.api.gui.IVelocityGUIBuilderConfiguration; +import at.gv.egiz.eaaf.core.api.gui.IVelocityGuiFormBuilder;  import at.gv.egiz.eaaf.core.exceptions.GUIBuildException;  import at.gv.egiz.eaaf.core.impl.gui.velocity.VelocityProvider; @@ -53,43 +55,65 @@ import at.gv.egiz.eaaf.core.impl.gui.velocity.VelocityProvider;   * @author tlenz    *   */ -public abstract class AbstractGUIFormBuilderImpl implements IGUIFormBuilder { -	private static final Logger log = LoggerFactory.getLogger(AbstractGUIFormBuilderImpl.class); +public abstract class AbstractVelocityGUIFormBuilderImpl implements IVelocityGuiFormBuilder { +	private static final Logger log = LoggerFactory.getLogger(AbstractVelocityGUIFormBuilderImpl.class);  	private static final String DEFAULT_CONTENT_TYPE = EAAFConstants.CONTENTTYPE_HTML_UTF8;  	private VelocityEngine engine; -	public AbstractGUIFormBuilderImpl() throws GUIBuildException { +	public AbstractVelocityGUIFormBuilderImpl() throws GUIBuildException {  		try {  			engine = VelocityProvider.getClassPathVelocityEngine(); -		} catch (Exception e) { +		} catch (final Exception e) {  			log.error("Initialization of Velocity-Engine to render GUI components FAILED.", e);  			throw new GUIBuildException("Initialization of Velocity-Engine to render GUI components FAILED.", e);  		}  	} + +	@Override +	public final void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGUIBuilderConfiguration config, +			String loggerName) throws GUIBuildException { +		if (config instanceof IVelocityGUIBuilderConfiguration) +			build(httpReq, httpResp, config, loggerName); +		else +			throw new IllegalStateException(this.getClass().getName() + " needs a " + IVelocityGUIBuilderConfiguration.class.getName()); -	public void build(HttpServletResponse httpResp, IGUIBuilderConfiguration config, String loggerName) throws GUIBuildException { -		build(httpResp, config, getInternalContentType(config), loggerName);  	} + +	@Override +	public final void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGUIBuilderConfiguration config, +			String contentType, String loggerName) throws GUIBuildException { +		if (config instanceof IVelocityGUIBuilderConfiguration) +			build(httpReq, httpResp, config, loggerName); +		else +			throw new IllegalStateException(this.getClass().getName() + " needs a " + IVelocityGUIBuilderConfiguration.class.getName()); +	} +	  	@Override -	public void build(HttpServletResponse httpResp, IGUIBuilderConfiguration config,  +	public void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IVelocityGUIBuilderConfiguration config, String loggerName) throws GUIBuildException { +		build(httpReq, httpResp, config, getInternalContentType(config), loggerName); +		 +	} +	 +	@Override +	public void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IVelocityGUIBuilderConfiguration config,   			String contentType, String loggerName) throws GUIBuildException {  		InputStream is = null;  		try { -			String viewName = config.getViewName();			 +			final String viewName = config.getViewName();			  			is = getTemplateInputStream(config);  			//build Velocity Context from input paramters -			VelocityContext context = buildContextFromViewParams(config.getViewParameters()); +			final VelocityContext context = buildContextFromViewParams(config.getViewParameters());  			//evaluate template -			StringWriter writer = new StringWriter(); +			final StringWriter writer = new StringWriter();  			engine.evaluate(context, writer, loggerName, new BufferedReader(new InputStreamReader(is)));  			//write template to response @@ -104,12 +128,12 @@ public abstract class AbstractGUIFormBuilderImpl implements IGUIFormBuilder {  						+ ". Contentsize:" + String.valueOf(content.length)  						+ " BufferSize:" + httpResp.getBufferSize()  						+ " ContentType:" + contentType); -				for (String el : httpResp.getHeaderNames()) +				for (final String el : httpResp.getHeaderNames())  					log.trace(" * Headername:" + el + " Value:" + httpResp.getHeader(el));  			} -		} catch (IOException e) { +		} catch (final IOException e) {  			log.error("GUI form-builder has an internal error.", e);  			throw new GUIBuildException("GUI form-builder has an internal error.", e); @@ -118,7 +142,7 @@ public abstract class AbstractGUIFormBuilderImpl implements IGUIFormBuilder {  				try {  					is.close(); -				} catch (IOException e) { +				} catch (final IOException e) {  					log.error("Can NOT close GUI-Template InputStream.", e);  				} @@ -132,7 +156,8 @@ public abstract class AbstractGUIFormBuilderImpl implements IGUIFormBuilder {  	 * @param config  	 * @return  	 */ -	public VelocityContext generateVelocityContextFromConfiguration(IGUIBuilderConfiguration config) { +	@Override +	public VelocityContext generateVelocityContextFromConfiguration(IVelocityGUIBuilderConfiguration config) {  		return buildContextFromViewParams(config.getViewParameters());  	} @@ -144,7 +169,8 @@ public abstract class AbstractGUIFormBuilderImpl implements IGUIFormBuilder {  	 * @return An {@link InputStream} but never null. The {@link InputStream} had to be closed be the invoking method  	 * @throws GUIBuildException  	 */ -	public InputStream getTemplateInputStream(IGUIBuilderConfiguration config) throws GUIBuildException { +	@Override +	public InputStream getTemplateInputStream(IVelocityGUIBuilderConfiguration config) throws GUIBuildException {  		InputStream is = config.getTemplate(config.getViewName());  		if (is == null) {  			log.trace("Loading GUI template:" + config.getViewName() + " from default resources ... "); @@ -167,13 +193,13 @@ public abstract class AbstractGUIFormBuilderImpl implements IGUIFormBuilder {  	 * @return  	 * @throws GUIBuildException  	 */ -	abstract protected InputStream getInternalTemplate(IGUIBuilderConfiguration config) throws GUIBuildException; +	abstract protected InputStream getInternalTemplate(IVelocityGUIBuilderConfiguration config) throws GUIBuildException;  	/**  	 * @return  	 */  -	protected String getInternalClasspathTemplateDir(IGUIBuilderConfiguration config, String defaultClassPathDir) { +	protected String getInternalClasspathTemplateDir(IVelocityGUIBuilderConfiguration config, String defaultClassPathDir) {  		String dir = config.getClasspathTemplateDir();  		if (dir != null) {  			if (!dir.endsWith("/")) @@ -190,12 +216,12 @@ public abstract class AbstractGUIFormBuilderImpl implements IGUIFormBuilder {  	 * @return  	 */  	private VelocityContext buildContextFromViewParams(Map<String, Object> viewParams) { -		VelocityContext context = new VelocityContext(); +		final VelocityContext context = new VelocityContext();  		if (viewParams != null) { -			Iterator<Entry<String, Object>> interator = viewParams.entrySet().iterator(); +			final Iterator<Entry<String, Object>> interator = viewParams.entrySet().iterator();  			while (interator.hasNext()) { -				Entry<String, Object> el = interator.next(); +				final Entry<String, Object> el = interator.next();  				context.put(el.getKey(), el.getValue());  			} diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/ProtocolAuthenticationService.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/ProtocolAuthenticationService.java index 8b0f2620..4edde029 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/ProtocolAuthenticationService.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/ProtocolAuthenticationService.java @@ -45,7 +45,7 @@ import at.gv.egiz.eaaf.core.api.IStatusMessenger;  import at.gv.egiz.eaaf.core.api.data.EAAFConstants;  import at.gv.egiz.eaaf.core.api.gui.IGUIBuilderConfiguration;  import at.gv.egiz.eaaf.core.api.gui.IGUIBuilderConfigurationFactory; -import at.gv.egiz.eaaf.core.api.gui.IGUIFormBuilder; +import at.gv.egiz.eaaf.core.api.gui.ISpringMVCGUIFormBuilder;  import at.gv.egiz.eaaf.core.api.gui.ModifyableGuiBuilderConfiguration;  import at.gv.egiz.eaaf.core.api.idp.IAction;  import at.gv.egiz.eaaf.core.api.idp.IAuthData; @@ -59,6 +59,7 @@ import at.gv.egiz.eaaf.core.api.idp.slo.SLOInformationInterface;  import at.gv.egiz.eaaf.core.api.logging.IRevisionLogger;  import at.gv.egiz.eaaf.core.api.logging.IStatisticLogger;  import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage; +import at.gv.egiz.eaaf.core.api.utils.IPendingRequestIdGenerationStrategy;  import at.gv.egiz.eaaf.core.exceptions.AuthnRequestValidatorException;  import at.gv.egiz.eaaf.core.exceptions.EAAFAuthenticationException;  import at.gv.egiz.eaaf.core.exceptions.EAAFException; @@ -67,6 +68,7 @@ import at.gv.egiz.eaaf.core.exceptions.GUIBuildException;  import at.gv.egiz.eaaf.core.exceptions.InvalidProtocolRequestException;  import at.gv.egiz.eaaf.core.exceptions.ProcessExecutionException;  import at.gv.egiz.eaaf.core.exceptions.ProtocolNotActiveException; +import at.gv.egiz.eaaf.core.impl.idp.controller.protocols.RequestImpl;  import at.gv.egiz.eaaf.core.impl.utils.HTTPUtils;  @Service @@ -77,10 +79,11 @@ public class ProtocolAuthenticationService implements IProtocolAuthenticationSer  	@Autowired(required=true) private ITransactionStorage transactionStorage;  	@Autowired(required=true) private IAuthenticationManager authmanager;			  	@Autowired(required=true) private IAuthenticationDataBuilder authDataBuilder;	 -	@Autowired(required=true) private IGUIFormBuilder guiBuilder; +	@Autowired(required=true) private ISpringMVCGUIFormBuilder guiBuilder;  	@Autowired(required=true) private IGUIBuilderConfigurationFactory guiConfigFactory;  	@Autowired(required=true) private IStatusMessenger statusMessager;  	@Autowired(required=true) private IRequestStorage requestStorage; +	@Autowired(required=true) IPendingRequestIdGenerationStrategy pendingReqIdGenerationStrategy;   	@Autowired(required=false) private ISSOManager ssoManager;  	@Autowired private IStatisticLogger statisticLogger; @@ -92,9 +95,12 @@ public class ProtocolAuthenticationService implements IProtocolAuthenticationSer  	@Override  	public void performAuthentication(final HttpServletRequest req, final HttpServletResponse resp,   			final IRequest pendingReq) throws IOException, EAAFException { -		try { -			if (pendingReq.isNeedAuthentication()) { +		try {			 +			if (pendingReq.isNeedAuthentication()) {								  				//request needs authentication --> start authentication process ... +				 +				//set pendingRequestId to support asynchrony message-processing +				((RequestImpl)pendingReq).setPendingRequestId(pendingReqIdGenerationStrategy.generateExternalPendingRequestId());  				//load Parameters from OnlineApplicationConfiguration  				final ISPConfiguration oaParam = pendingReq.getServiceProviderConfiguration(); @@ -366,11 +372,11 @@ public class ProtocolAuthenticationService implements IProtocolAuthenticationSer  	} -	private void writeHTMLErrorResponse(final HttpServletRequest req, final HttpServletResponse httpResp, final String msg, final String errorCode, final Exception error) throws IOException, EAAFException { +	private void writeHTMLErrorResponse(final HttpServletRequest httpReq, final HttpServletResponse httpResp, final String msg, final String errorCode, final Exception error) throws IOException, EAAFException {  		try {  			final IGUIBuilderConfiguration config  -				= guiConfigFactory.getDefaultErrorGUI(HTTPUtils.extractAuthURLFromRequest(req)); +				= guiConfigFactory.getDefaultErrorGUI(HTTPUtils.extractAuthURLFromRequest(httpReq));  //				HTTPUtils.extractAuthURLFromRequest(req),   //					DefaultGUIFormBuilderConfiguration.VIEW_ERRORMESSAGE,  @@ -392,7 +398,7 @@ public class ProtocolAuthenticationService implements IProtocolAuthenticationSer -			guiBuilder.build(httpResp, config, "Error-Message"); +			guiBuilder.build(httpReq, httpResp, config, "Error-Message");  		} catch (final GUIBuildException e) {  			log.warn("Can not build error-message GUI.", e); | 
