Class BaseIdPInitiatedSSORequestMessageDecoder

All Implemented Interfaces:
Component, DestructableComponent, InitializableComponent, UnmodifiableComponent, MessageDecoder, HttpServletRequestMessageDecoder
Direct Known Subclasses:
IdPInitiatedSSORequestMessageDecoder, IdPInitiatedSSORequestMessageDecoder

@NotThreadSafe
public abstract class BaseIdPInitiatedSSORequestMessageDecoder
extends AbstractHttpServletRequestMessageDecoder
Decodes an incoming Shibboleth Authentication Request message.
  • Field Details

    • PROVIDER_ID_PARAM

      @Nonnull @NotEmpty public static final String PROVIDER_ID_PARAM
      Name of the query parameter carrying the service provider entity ID: "providerId" .
      See Also:
      Constant Field Values
    • SHIRE_PARAM

      @Nonnull @NotEmpty public static final String SHIRE_PARAM
      Name of the query parameter carrying the service provider's assertion consumer service URL: "shire" .
      See Also:
      Constant Field Values
    • TARGET_PARAM

      @Nonnull @NotEmpty public static final String TARGET_PARAM
      Name of the query parameter carrying the service provider's target/RelayState information: "target" .
      See Also:
      Constant Field Values
    • TIME_PARAM

      @Nonnull @NotEmpty public static final String TIME_PARAM
      Name of the query parameter carrying the current time at the service provider: "time" .
      See Also:
      Constant Field Values
    • log

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

      @Nullable private BindingDescriptor bindingDescriptor
      Optional BindingDescriptor to inject into SAMLBindingContext created.
    • protocolMessageLog

      @Nonnull private final org.slf4j.Logger protocolMessageLog
      Used to log protocol messages.
    • idGenerator

      @Nonnull private final IdentifierGenerationStrategy idGenerator
      ID generator.
  • Constructor Details

    • BaseIdPInitiatedSSORequestMessageDecoder

      public BaseIdPInitiatedSSORequestMessageDecoder()
  • Method Details

    • getBindingDescriptor

      @Nullable public BindingDescriptor getBindingDescriptor()
      Get an optional BindingDescriptor to inject into SAMLBindingContext created.
      Returns:
      binding descriptor
    • setBindingDescriptor

      public void setBindingDescriptor​(@Nullable BindingDescriptor descriptor)
      Set an optional BindingDescriptor to inject into SAMLBindingContext created.
      Parameters:
      descriptor - a binding descriptor
    • decode

      public void decode() throws MessageDecodingException
      Specified by:
      decode in interface MessageDecoder
      Overrides:
      decode in class AbstractHttpServletRequestMessageDecoder
      Throws:
      MessageDecodingException
    • buildIdPInitiatedSSORequest

      @Nonnull protected IdPInitiatedSSORequest buildIdPInitiatedSSORequest() throws MessageDecodingException
      Build a new IdP-initiated request structure from the inbound HTTP request.
      Returns:
      the new SSO request structure
      Throws:
      MessageDecodingException - if the request doesn't contain an entityID
    • getEntityId

      @Nonnull @NotEmpty protected String getEntityId​(@Nonnull javax.servlet.http.HttpServletRequest request) throws MessageDecodingException
      Gets the entity ID of the service provider.
      Parameters:
      request - current HTTP request
      Returns:
      the entity ID of the service provider
      Throws:
      MessageDecodingException - thrown if the request does not contain a service provider entity ID
    • getAcsUrl

      @Nullable protected String getAcsUrl​(@Nonnull javax.servlet.http.HttpServletRequest request)
      Gets the assertion consumer service URL for the service provider.
      Parameters:
      request - current HTTP request
      Returns:
      the assertion consumer service URL, may be null if none is given in the request
    • getTarget

      @Nullable protected String getTarget​(@Nonnull javax.servlet.http.HttpServletRequest request)
      Gets the opaque relay state sent by the service provider.
      Parameters:
      request - current HTTP request
      Returns:
      the relay state, or null if the service provider did not send one
    • getTime

      @Nullable protected Instant getTime​(@Nonnull javax.servlet.http.HttpServletRequest request) throws MessageDecodingException
      Gets the current time at the SP, if set.
      Parameters:
      request - current HTTP request
      Returns:
      the time sent by the service provider, or null
      Throws:
      MessageDecodingException - thrown if the time parameter given by the service provider is non-numeric or a negative time
    • logDecodedMessage

      protected void logDecodedMessage()
      Log the decoded message to the protocol message logger.
    • getMessageID

      @Nonnull protected String getMessageID()
      Construct a message ID for the request.
      Returns:
      the message ID to use
    • getMessageToLog

      @Nullable protected abstract String getMessageToLog()
      Get the string representation of what will be logged as the protocol message.
      Returns:
      the string representing the protocol message for logging purposes