Search in sources :

Example 1 with InOutOperationContext

use of org.opensaml.messaging.context.InOutOperationContext in project pac4j by pac4j.

the class SAML2ArtifactBindingDecoder method doDecode.

@Override
protected void doDecode() throws MessageDecodingException {
    try {
        final var endpointResolver = new DefaultEndpointResolver<ArtifactResolutionService>();
        endpointResolver.initialize();
        final var roleResolver = new PredicateRoleDescriptorResolver(idpMetadataResolver.resolve());
        roleResolver.initialize();
        final var messageContext = new SAML2MessageContext();
        final var soapClient = new PipelineFactoryHttpSOAPClient() {

            @SuppressWarnings("rawtypes")
            @Override
            public void send(final String endpoint, final InOutOperationContext operationContext) throws SOAPException, SecurityException {
                super.send(endpoint, operationContext);
                transferContext(operationContext, messageContext);
            }
        };
        soapClient.setPipelineFactory(soapPipelineProvider.getPipelineFactory());
        soapClient.setHttpClient(soapPipelineProvider.getHttpClientBuilder().buildClient());
        final var artifactDecoder = new Pac4jHTTPArtifactDecoder();
        artifactDecoder.setWebContext(context);
        artifactDecoder.setSelfEntityIDResolver(new FixedEntityIdResolver(spMetadataResolver));
        artifactDecoder.setRoleDescriptorResolver(roleResolver);
        artifactDecoder.setArtifactEndpointResolver(endpointResolver);
        artifactDecoder.setPeerEntityRole(IDPSSODescriptor.DEFAULT_ELEMENT_NAME);
        artifactDecoder.setSOAPClient(soapClient);
        artifactDecoder.setParserPool(getParserPool());
        artifactDecoder.initialize();
        artifactDecoder.decode();
        messageContext.getMessageContext().setMessage(artifactDecoder.getMessageContext().getMessage());
        this.populateBindingContext(messageContext);
        this.setMessageContext(messageContext.getMessageContext());
    } catch (final Exception e) {
        throw new MessageDecodingException(e);
    }
}
Also used : SAML2MessageContext(org.pac4j.saml.context.SAML2MessageContext) PipelineFactoryHttpSOAPClient(org.opensaml.soap.client.http.PipelineFactoryHttpSOAPClient) MessageDecodingException(org.opensaml.messaging.decoder.MessageDecodingException) DefaultEndpointResolver(org.opensaml.saml.common.binding.impl.DefaultEndpointResolver) InOutOperationContext(org.opensaml.messaging.context.InOutOperationContext) PredicateRoleDescriptorResolver(org.opensaml.saml.metadata.resolver.impl.PredicateRoleDescriptorResolver) Pac4jHTTPArtifactDecoder(org.pac4j.saml.transport.Pac4jHTTPArtifactDecoder) SecurityException(org.opensaml.security.SecurityException) MessageDecodingException(org.opensaml.messaging.decoder.MessageDecodingException) SOAPException(org.opensaml.soap.common.SOAPException)

Aggregations

InOutOperationContext (org.opensaml.messaging.context.InOutOperationContext)1 MessageDecodingException (org.opensaml.messaging.decoder.MessageDecodingException)1 DefaultEndpointResolver (org.opensaml.saml.common.binding.impl.DefaultEndpointResolver)1 PredicateRoleDescriptorResolver (org.opensaml.saml.metadata.resolver.impl.PredicateRoleDescriptorResolver)1 SecurityException (org.opensaml.security.SecurityException)1 PipelineFactoryHttpSOAPClient (org.opensaml.soap.client.http.PipelineFactoryHttpSOAPClient)1 SOAPException (org.opensaml.soap.common.SOAPException)1 SAML2MessageContext (org.pac4j.saml.context.SAML2MessageContext)1 Pac4jHTTPArtifactDecoder (org.pac4j.saml.transport.Pac4jHTTPArtifactDecoder)1