Class HTTPRedirectDeflateEncoder

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

public class HTTPRedirectDeflateEncoder extends BaseSAML2MessageEncoder
SAML 2.0 HTTP Redirect encoder using the DEFLATE encoding method. This encoder only supports DEFLATE compression.
  • Field Details

    • DISALLOWED_ENDPOINT_QUERY_PARAMS

      @Nonnull private static final Set<String> DISALLOWED_ENDPOINT_QUERY_PARAMS
      Params which are disallowed from appearing in the input endpoint URL.
    • log

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

    • HTTPRedirectDeflateEncoder

      public HTTPRedirectDeflateEncoder()
  • Method Details

    • getBindingURI

      @Nonnull @NotEmpty public String getBindingURI()
      Gets the SAML binding URI supported by this encoder.
      Returns:
      SAML binding URI supported by this encoder
    • 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
    • removeSignature

      protected void removeSignature(@Nonnull SAMLObject message)
      Removes the signature from the protocol message.
      Parameters:
      message - current message context
    • deflateAndBase64Encode

      @Nonnull protected String deflateAndBase64Encode(@Nonnull SAMLObject message) throws MessageEncodingException
      DEFLATE (RFC1951) compresses the given SAML message.
      Parameters:
      message - SAML message
      Returns:
      DEFLATE compressed message
      Throws:
      MessageEncodingException - thrown if there is a problem compressing the message
    • buildRedirectURL

      @Nonnull protected String buildRedirectURL(@Nonnull MessageContext messageContext, @Nonnull @NotEmpty String endpoint, @Nonnull @NotEmpty String message) throws MessageEncodingException
      Builds the URL to redirect the client to.
      Parameters:
      messageContext - current message context
      endpoint - endpoint URL to send encoded message to
      message - Deflated and Base64 encoded message
      Returns:
      URL to redirect client to
      Throws:
      MessageEncodingException - thrown if the SAML message is neither a RequestAbstractType or Response
    • removeDisallowedQueryParams

      protected void removeDisallowedQueryParams(@Nonnull List<Pair<String,String>> queryParams)
      Remove disallowed query params from the supplied list.
      Parameters:
      queryParams - the list of query params on which to operate
    • getSignatureAlgorithmURI

      @Nonnull protected String getSignatureAlgorithmURI(@Nonnull SignatureSigningParameters signingParameters) throws MessageEncodingException
      Gets the signature algorithm URI to use.
      Parameters:
      signingParameters - the signing parameters to use
      Returns:
      signature algorithm to use with the associated signing credential
      Throws:
      MessageEncodingException - thrown if the algorithm URI is not supplied explicitly and could not be derived from the supplied credential
    • generateSignature

      @Nonnull protected String generateSignature(@Nonnull Credential signingCredential, @Nonnull String algorithmURI, @Nonnull String queryString) throws MessageEncodingException
      Generates the signature over the query string.
      Parameters:
      signingCredential - credential that will be used to sign query string
      algorithmURI - algorithm URI of the signing credential
      queryString - query string to be signed
      Returns:
      base64 encoded signature of query string
      Throws:
      MessageEncodingException - there is an error computing the signature