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()
    • doEncode

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