Class HTTPArtifactEncoder

  • All Implemented Interfaces:
    net.shibboleth.utilities.java.support.component.Component, net.shibboleth.utilities.java.support.component.DestructableComponent, net.shibboleth.utilities.java.support.component.InitializableComponent, net.shibboleth.utilities.java.support.component.UnmodifiableComponent, org.opensaml.messaging.encoder.MessageEncoder, org.opensaml.messaging.encoder.servlet.HttpServletResponseMessageEncoder, org.opensaml.saml.common.binding.encoding.SAMLMessageEncoder

    public class HTTPArtifactEncoder
    extends BaseSAML2MessageEncoder
    SAML 2 Artifact Binding encoder, support both HTTP GET and POST.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private org.opensaml.saml.common.binding.artifact.SAMLArtifactMap artifactMap
      SAML artifact map used to store created artifacts for later retrieval.
      static String DEFAULT_TEMPLATE_ID
      Default template ID.
      private byte[] defaultArtifactType
      Default artifact type to use when encoding messages.
      private Logger log
      Class logger.
      private boolean postEncoding
      Whether the POST encoding should be used, instead of GET.
      private VelocityEngine velocityEngine
      Velocity engine used to evaluate the template when performing POST encoding.
      private String velocityTemplateId
      ID of the velocity template used when performing POST encoding.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected org.opensaml.saml.saml2.binding.artifact.SAML2Artifact buildArtifact​(org.opensaml.messaging.context.MessageContext messageContext)
      Builds the SAML 2 artifact for the outgoing message.
      protected void doDestroy()
      protected void doEncode()
      protected void doInitialize()
      org.opensaml.saml.common.binding.artifact.SAMLArtifactMap getArtifactMap()
      Get the SAML artifact map to use.
      String getBindingURI()
      protected void getEncode()
      Performs HTTP GET based encoding.
      private String getInboundMessageIssuer​(org.opensaml.messaging.context.MessageContext messageContext)
      Get the requester.
      private String getOutboundMessageIssuer​(org.opensaml.messaging.context.MessageContext messageContext)
      Get the outbound message issuer.
      private byte[] getSAMLArtifactType​(org.opensaml.messaging.context.MessageContext messageContext)
      Get the SAML artifact type from the message context.
      VelocityEngine getVelocityEngine()
      Get the VelocityEngine instance.
      String getVelocityTemplateId()
      Get the Velocity template id.
      boolean isPostEncoding()
      Get whether the encoder will encode the artifact via POST encoding.
      protected void postEncode()
      Performs HTTP POST based encoding.
      void setArtifactMap​(org.opensaml.saml.common.binding.artifact.SAMLArtifactMap newArtifactMap)
      Set the SAML artifact map to use.
      void setPostEncoding​(boolean post)
      Set whether the encoder will encode the artifact via POST encoding.
      void setVelocityEngine​(VelocityEngine newVelocityEngine)
      Set the VelocityEngine instance.
      void setVelocityTemplateId​(String newVelocityTemplateId)
      Set the Velocity template id.
      private void storeSAMLArtifactType​(org.opensaml.messaging.context.MessageContext messageContext, byte[] artifactType)
      Store the SAML artifact type in the message context.
      • Methods inherited from class org.opensaml.messaging.encoder.servlet.BaseHttpServletResponseXMLMessageEncoder

        encode, getMessageToLog, logEncodedMessage, marshallMessage
      • Methods inherited from class org.opensaml.messaging.encoder.servlet.AbstractHttpServletResponseMessageEncoder

        getHttpServletResponse, setHttpServletResponse
      • Methods inherited from class org.opensaml.messaging.encoder.AbstractMessageEncoder

        getMessageContext, prepareContext, setMessageContext
      • Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent

        destroy, initialize, isDestroyed, isInitialized
      • Methods inherited from interface net.shibboleth.utilities.java.support.component.DestructableComponent

        destroy, isDestroyed
      • Methods inherited from interface net.shibboleth.utilities.java.support.component.InitializableComponent

        initialize, isInitialized
      • Methods inherited from interface org.opensaml.messaging.encoder.MessageEncoder

        encode, prepareContext, setMessageContext
    • Field Detail

      • DEFAULT_TEMPLATE_ID

        @Nonnull
        @NotEmpty
        public static final String DEFAULT_TEMPLATE_ID
        Default template ID.
        See Also:
        Constant Field Values
      • log

        @Nonnull
        private final Logger log
        Class logger.
      • postEncoding

        private boolean postEncoding
        Whether the POST encoding should be used, instead of GET.
      • velocityEngine

        @Nullable
        private VelocityEngine velocityEngine
        Velocity engine used to evaluate the template when performing POST encoding.
      • velocityTemplateId

        @Nonnull
        @NotEmpty
        private String velocityTemplateId
        ID of the velocity template used when performing POST encoding.
      • artifactMap

        @NonnullAfterInit
        private org.opensaml.saml.common.binding.artifact.SAMLArtifactMap artifactMap
        SAML artifact map used to store created artifacts for later retrieval.
      • defaultArtifactType

        @Nonnull
        @NotEmpty
        private byte[] defaultArtifactType
        Default artifact type to use when encoding messages.
    • Constructor Detail

      • HTTPArtifactEncoder

        public HTTPArtifactEncoder()
        Constructor.
    • Method Detail

      • getBindingURI

        public String getBindingURI()
      • isPostEncoding

        public boolean isPostEncoding()
        Get whether the encoder will encode the artifact via POST encoding.
        Returns:
        true if POST encoding will be used, false if GET encoding will be used
      • setPostEncoding

        public void setPostEncoding​(boolean post)
        Set whether the encoder will encode the artifact via POST encoding.
        Parameters:
        post - true if POST encoding will be used, false if GET encoding will be used
      • getVelocityEngine

        @Nullable
        public VelocityEngine getVelocityEngine()
        Get the VelocityEngine instance.
        Returns:
        return the VelocityEngine instance
      • setVelocityEngine

        public void setVelocityEngine​(@Nullable
                                      VelocityEngine newVelocityEngine)
        Set the VelocityEngine instance.
        Parameters:
        newVelocityEngine - the new VelocityEngine instane
      • getVelocityTemplateId

        @Nonnull
        @NotEmpty
        public String getVelocityTemplateId()
        Get the Velocity template id.

        Defaults to DEFAULT_TEMPLATE_ID.

        Returns:
        return the Velocity template id
      • setVelocityTemplateId

        public void setVelocityTemplateId​(@Nonnull @NotEmpty
                                          String newVelocityTemplateId)
        Set the Velocity template id.

        Defaults to DEFAULT_TEMPLATE_ID.

        Parameters:
        newVelocityTemplateId - the new Velocity template id
      • getArtifactMap

        @NonnullAfterInit
        public org.opensaml.saml.common.binding.artifact.SAMLArtifactMap getArtifactMap()
        Get the SAML artifact map to use.
        Returns:
        the artifactMap.
      • setArtifactMap

        public void setArtifactMap​(@Nonnull
                                   org.opensaml.saml.common.binding.artifact.SAMLArtifactMap newArtifactMap)
        Set the SAML artifact map to use.
        Parameters:
        newArtifactMap - the new artifactMap
      • doInitialize

        protected void doInitialize()
                             throws net.shibboleth.utilities.java.support.component.ComponentInitializationException
        Overrides:
        doInitialize in class org.opensaml.messaging.encoder.servlet.AbstractHttpServletResponseMessageEncoder
        Throws:
        net.shibboleth.utilities.java.support.component.ComponentInitializationException
      • doDestroy

        protected void doDestroy()
        Overrides:
        doDestroy in class org.opensaml.messaging.encoder.servlet.AbstractHttpServletResponseMessageEncoder
      • doEncode

        protected void doEncode()
                         throws org.opensaml.messaging.encoder.MessageEncodingException
        Specified by:
        doEncode in class org.opensaml.messaging.encoder.AbstractMessageEncoder
        Throws:
        org.opensaml.messaging.encoder.MessageEncodingException
      • postEncode

        protected void postEncode()
                           throws org.opensaml.messaging.encoder.MessageEncodingException
        Performs HTTP POST based encoding.
        Throws:
        org.opensaml.messaging.encoder.MessageEncodingException - thrown if there is a problem POST encoding the artifact
      • getEncode

        protected void getEncode()
                          throws org.opensaml.messaging.encoder.MessageEncodingException
        Performs HTTP GET based encoding.
        Throws:
        org.opensaml.messaging.encoder.MessageEncodingException - thrown if there is a problem GET encoding the artifact
      • buildArtifact

        @Nonnull
        protected org.opensaml.saml.saml2.binding.artifact.SAML2Artifact buildArtifact​(@Nonnull
                                                                                       org.opensaml.messaging.context.MessageContext messageContext)
                                                                                throws org.opensaml.messaging.encoder.MessageEncodingException
        Builds the SAML 2 artifact for the outgoing message.
        Parameters:
        messageContext - current request context
        Returns:
        SAML 2 artifact for outgoing message
        Throws:
        org.opensaml.messaging.encoder.MessageEncodingException - thrown if the artifact can not be created
      • getOutboundMessageIssuer

        @Nullable
        private String getOutboundMessageIssuer​(@Nonnull
                                                org.opensaml.messaging.context.MessageContext messageContext)
        Get the outbound message issuer.
        Parameters:
        messageContext - the message context
        Returns:
        the outbound message issuer
      • getInboundMessageIssuer

        @Nullable
        private String getInboundMessageIssuer​(@Nonnull
                                               org.opensaml.messaging.context.MessageContext messageContext)
        Get the requester.
        Parameters:
        messageContext - the message context
        Returns:
        the requester
      • storeSAMLArtifactType

        private void storeSAMLArtifactType​(@Nonnull
                                           org.opensaml.messaging.context.MessageContext messageContext,
                                           @Nonnull @NotEmpty
                                           byte[] artifactType)
        Store the SAML artifact type in the message context.
        Parameters:
        messageContext - the message context
        artifactType - the artifact type to store
      • getSAMLArtifactType

        @Nullable
        private byte[] getSAMLArtifactType​(@Nonnull
                                           org.opensaml.messaging.context.MessageContext messageContext)
        Get the SAML artifact type from the message context.
        Parameters:
        messageContext - the message context
        Returns:
        the artifact type