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);
}
}