private void redirectUserWithRequest()

in src/main/java/org/apache/sling/auth/saml2/impl/AuthenticationHandlerSAML2Impl.java [329:362]


    private void redirectUserWithRequest(final HttpServletRequest httpServletRequest ,
                     final HttpServletResponse httpServletResponse, final RequestAbstractType requestForIDP) {
        MessageContext context = new MessageContext();
        context.setMessage(requestForIDP);
        SAMLBindingContext bindingContext = context.getSubcontext(SAMLBindingContext.class, true);
        SAMLPeerEntityContext peerEntityContext = context.getSubcontext(SAMLPeerEntityContext.class, true);
        SAMLEndpointContext endpointContext = peerEntityContext.getSubcontext(SAMLEndpointContext.class, true);
        if (requestForIDP instanceof AuthnRequest) {
            setRelayStateOnSession(httpServletRequest, bindingContext);
            setRequestIDOnSession(httpServletRequest, (AuthnRequest)requestForIDP);
            endpointContext.setEndpoint(getIPDEndpoint());
        }
        SignatureSigningParameters signatureSigningParameters = new SignatureSigningParameters();
        signatureSigningParameters.setSigningCredential(this.getSpKeypair());
        signatureSigningParameters.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
        context.getSubcontext(SecurityParametersContext.class, true).setSignatureSigningParameters(signatureSigningParameters);
        HTTPRedirectDeflateEncoder encoder = new HTTPRedirectDeflateEncoder();
        encoder.setMessageContext(context);
        encoder.setHttpServletResponse(httpServletResponse);

        try {
            encoder.initialize();
        } catch (ComponentInitializationException e) {
            throw new SAML2RuntimeException(e);
        }

        logger.info("Request: {}", requestForIDP.getClass());
        logger.info("Redirecting to IDP");
        try {
            encoder.encode();
        } catch (MessageEncodingException e) {
            throw new SAML2RuntimeException(e);
        }
    }