{
String referer = request.getHeader("Referer");
if(response.getStatus() == HttpServletResponse.SC_FORBIDDEN)
{
ResponseType errorResponseType = this.getErrorResponse(referer, JBossSAMLURIConstants.STATUS_AUTHNFAILED.get());
try
{
send(errorResponseType, request.getParameter("RelayState"), response);
}
catch (ParsingException e)
{
log.error(e);
}
catch (ProcessingException e)
{
log.error(e);
}
return;
}
//User is authenticated as we are on the return path
userPrincipal = request.getPrincipal();
if(userPrincipal != null)
{
//Send valid saml response after processing the request
if(containsSAMLRequestMessage)
{
RequestAbstractType requestAbstractType = null;
try
{
requestAbstractType = getSAMLRequest(request);
boolean isValid = this.validate(request);
if(!isValid)
throw new GeneralSecurityException("Validity Checks Failed");
this.isTrusted(requestAbstractType.getIssuer().getValue());
ResponseType responseType = this.getResponse(request, userPrincipal);
send(responseType, request.getParameter("RelayState"), response);
}
catch (Exception e)
{
log.error("Exception:" ,e);
if(requestAbstractType != null)
referer = requestAbstractType.getIssuer().getValue();
ResponseType errorResponseType = this.getErrorResponse(referer, JBossSAMLURIConstants.STATUS_RESPONDER.get());
try
{
send(errorResponseType, request.getParameter("RelayState"), response);
}
catch (ParsingException e1)