Class HTTPArtifactEncoder

All Implemented Interfaces:
Component, DestructableComponent, InitializableComponent, UnmodifiableComponent, MessageEncoder, HttpServletResponseMessageEncoder, SAMLMessageEncoder

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

    • DEFAULT_TEMPLATE_ID

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

      @Nonnull private final org.slf4j.Logger log
      Class logger.
    • postEncoding

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

      @Nullable private org.apache.velocity.app.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 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 Details

    • HTTPArtifactEncoder

      public HTTPArtifactEncoder()
      Constructor.
  • Method Details

    • getBindingURI

      public String getBindingURI()
      Gets the SAML binding URI supported by this encoder.
      Returns:
      SAML binding URI supported by this encoder
    • 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 org.apache.velocity.app.VelocityEngine getVelocityEngine()
      Get the VelocityEngine instance.
      Returns:
      return the VelocityEngine instance
    • setVelocityEngine

      public void setVelocityEngine(@Nullable org.apache.velocity.app.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 SAMLArtifactMap getArtifactMap()
      Get the SAML artifact map to use.
      Returns:
      the artifactMap.
    • setArtifactMap

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

      protected void doInitialize() throws ComponentInitializationException
      Overrides:
      doInitialize in class AbstractHttpServletResponseMessageEncoder
      Throws:
      ComponentInitializationException
    • doDestroy

      protected void doDestroy()
      Overrides:
      doDestroy in class AbstractHttpServletResponseMessageEncoder
    • doEncode

      protected void doEncode() throws MessageEncodingException
      Performs the encoding logic. By the time this is called, this encoder has already been initialized and checked to ensure that it has not been destroyed.
      Specified by:
      doEncode in class AbstractMessageEncoder
      Throws:
      MessageEncodingException - thrown if there is a problem encoding the message
    • postEncode

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

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

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

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

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

      private void storeSAMLArtifactType(@Nonnull 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 MessageContext messageContext)
      Get the SAML artifact type from the message context.
      Parameters:
      messageContext - the message context
      Returns:
      the artifact type