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

      @Nonnull @NotEmpty 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 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
    • doEncode

      protected void doEncode() throws MessageEncodingException
      Specified by:
      doEncode in class AbstractMessageEncoder
      Throws:
      MessageEncodingException
    • 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