/** {@inheritDoc} */ public void processRequest(InTransport in, OutTransport out) { HttpServletRequest httpRequest = ((HttpServletRequestAdapter)in).getWrappedRequest(); HttpServletResponse httpResponse = ((HttpServletResponseAdapter)out).getWrappedResponse(); RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(jspPage); try { dispatcher.forward(httpRequest, httpResponse); return; } catch (Throwable t) { log.error("Could not dispatch to error JSP page: " + jspPage, t); return; } } }
public boolean supports(InTransport transport) { if (transport instanceof HttpServletRequestAdapter) { HttpServletRequestAdapter t = (HttpServletRequestAdapter) transport; HttpServletRequest request = t.getWrappedRequest(); return "POST".equalsIgnoreCase(t.getHTTPMethod()) && request.getContentType() != null && request.getContentType().startsWith("text/xml"); } else { return false; } }
protected void populateGenericContext(HttpServletRequest request, HttpServletResponse response, SAMLMessageContext context) throws MetadataProviderException { HttpServletRequestAdapter inTransport = new HttpServletRequestAdapter(request); HttpServletResponseAdapter outTransport = new HttpServletResponseAdapter(response, request.isSecure()); // Store attribute which cannot be located from InTransport directly request.setAttribute(org.springframework.security.saml.SAMLConstants.LOCAL_CONTEXT_PATH, request.getContextPath()); context.setMetadataProvider(metadata); context.setInboundMessageTransport(inTransport); context.setOutboundMessageTransport(outTransport); context.setMessageStorage(storageFactory.getMessageStorage(request)); }
@Override protected WebSSOProfileOptions getProfileOptions(SAMLMessageContext context, AuthenticationException exception) throws MetadataProviderException { WebSSOProfileOptions profileOptions = super.getProfileOptions(context, exception); InTransport inboundMessageTransport = context.getInboundMessageTransport(); if (inboundMessageTransport instanceof HttpServletRequestAdapter) { HttpServletRequestAdapter messageTransport = (HttpServletRequestAdapter) inboundMessageTransport; String forceAuthn = messageTransport.getParameterValue("force-authn"); if ("true".equals(forceAuthn)) { profileOptions.setForceAuthN(true); } } return profileOptions; } }
HTTPInTransport profileReq = new HttpServletRequestAdapter(httpRequest); HTTPOutTransport profileResp = new HttpServletResponseAdapter(httpResponse, httpRequest.isSecure());
/** {@inheritDoc} */ public void processRequest(InTransport in, OutTransport out) { VelocityContext context = new VelocityContext(); context.put("request", ((HttpServletRequestAdapter) in).getWrappedRequest()); context.put("requestError", in.getAttribute(AbstractErrorHandler.ERROR_KEY)); context.put("encoder", ESAPI.encoder()); HttpServletResponse response = ((HttpServletResponseAdapter) out).getWrappedResponse(); response.setContentType("text/html"); response.setHeader("Cache-Control", "content=\"no-store,no-cache,must-revalidate\""); response.setHeader("Pragma","no-cache"); response.setHeader("Expires","-1"); try { OutputStreamWriter responseWriter = new OutputStreamWriter(out.getOutgoingStream()); Template template = velocityEngine.getTemplate(templatePath); template.merge(context, responseWriter); responseWriter.flush(); } catch (Throwable t) { log.error("Unable to evaluate velocity error template", t); } return; } }
@Override public boolean supports(InTransport transport) { if (transport instanceof HttpServletRequestAdapter) { HttpServletRequestAdapter t = (HttpServletRequestAdapter) transport; if(!"POST".equalsIgnoreCase(t.getHTTPMethod())){ return false; } HttpServletRequest request = t.getWrappedRequest(); String contentType = request.getContentType(); return contentType != null && contentType.startsWith(org.springframework.security.saml.SAMLConstants.PAOS_HTTP_ACCEPT_HEADER); } else { return false; } }
.setInboundMessageTransport(new HttpServletRequestAdapter( request));
/** * Extract the transport endpoint at which this message was received. * * <p>This default implementation assumes an underlying message context {@link InTransport} type * of {@link HttpServletRequestAdapter} and returns the string representation of the underlying * request URL as constructed via {@link HttpServletRequest#getRequestURL()}.</p> * * <p>Subclasses should override if binding-specific behavior or support for other transport * typs is required. In this case, see also {@link #compareEndpointURIs(String, String)}.</p> * * * @param messageContext current message context * @return string representing the transport endpoint URI at which the current message was received * @throws MessageDecodingException thrown if the endpoint can not be extracted from the message * context and converted to a string representation */ protected String getActualReceiverEndpointURI(SAMLMessageContext messageContext) throws MessageDecodingException { InTransport inTransport = messageContext.getInboundMessageTransport(); if (! (inTransport instanceof HttpServletRequestAdapter)) { log.error("Message context InTransport instance was an unsupported type: {}", inTransport.getClass().getName()); throw new MessageDecodingException("Message context InTransport instance was an unsupported type"); } HttpServletRequest httpRequest = ((HttpServletRequestAdapter)inTransport).getWrappedRequest(); StringBuffer urlBuilder = httpRequest.getRequestURL(); return urlBuilder.toString(); }
HttpServletRequestAdapter requestAdapter = (HttpServletRequestAdapter) messageContext .getInboundMessageTransport(); HttpServletRequest request = requestAdapter.getWrappedRequest();
/** * Determines whether ECP profile should get initialized. By default ECP is used when request declares supports for ECP * and ECP is allowed for the current service provider. In case ECP is enabled but webSSOprofileECP wasn't set a warning * is logged and ECP is not used. * * @param context context * @return true if ECP profile should get initialized */ protected boolean isECP(SAMLMessageContext context) { HttpServletRequest request = ((HttpServletRequestAdapter) context.getInboundMessageTransport()).getWrappedRequest(); boolean ecp = context.getLocalExtendedMetadata().isEcpEnabled() && SAMLUtil.isECPRequest(request); if (ecp) { if (webSSOprofileECP == null) { log.warn("ECP profile was specified to be used, but profile is not configured in the EntryPoint, ECP will be skipped"); return false; } else { return true; } } else { return false; } }
HttpServletRequest httpRequest = ((HttpServletRequestAdapter)inTransport).getWrappedRequest(); String requestURL = DatatypeHelper.safeTrimOrNullString(httpRequest.getRequestURL().toString()); String queryString = DatatypeHelper.safeTrimOrNullString(httpRequest.getQueryString());