Interface SAMLArtifactMap

All Known Implementing Classes:
BasicSAMLArtifactMap, StorageServiceSAMLArtifactMap

public interface SAMLArtifactMap
Maps an artifact to a SAML message and back again.

An implementation of this interface MUST ensure that the persisted SAML message is no longer tied to any parent XMLObject that may have contained it. This ensures that it can be safely added to another object once retrieved from the map. This might for example be achieved by: 1) cloning the SAMLObject prior to storage, or 2) by serializing it to a string and re-parsing and unmarshalling it once retrieved from the underlying data store. This requirement may be handled by the SAMLArtifactMap directly, or by the use of of a specific implementation of SAMLArtifactMap.SAMLArtifactMapEntryFactory.

  • Nested Class Summary

    Nested Classes
    Modifier and Type Interface Description
    static interface  SAMLArtifactMap.SAMLArtifactMapEntry
    Represents a mapping between an artifact and a SAML message with some associated information.
    static interface  SAMLArtifactMap.SAMLArtifactMapEntryFactory
    A factory for producing SAMLArtifactMapEntry instances based on standard inputs, and reading/writing them from/to storage.
  • Method Summary

    Modifier and Type Method Description
    boolean contains​(String artifact)
    Checks if a given artifact has a map entry.
    SAMLArtifactMap.SAMLArtifactMapEntry get​(String artifact)
    Gets the artifact entry for the given artifact.
    void put​(String artifact, String relyingPartyId, String issuerId, SAMLObject samlMessage)
    Creates a mapping between a given artifact and the SAML message to which it maps.
    void remove​(String artifact)
    Removes the artifact from this map.
  • Method Details

    • contains

      boolean contains​(@Nonnull @NotEmpty String artifact) throws IOException
      Checks if a given artifact has a map entry.
      Parameters:
      artifact - the artifact to check
      Returns:
      true iff this map has an entry for the given artifact
      Throws:
      IOException - if an error occurs retrieving the information
    • put

      void put​(@Nonnull @NotEmpty String artifact, @Nonnull @NotEmpty String relyingPartyId, @Nonnull @NotEmpty String issuerId, @Nonnull SAMLObject samlMessage) throws IOException
      Creates a mapping between a given artifact and the SAML message to which it maps.
      Parameters:
      artifact - the artifact
      relyingPartyId - ID of the party the artifact was sent to
      issuerId - ID of the issuer of the artifact
      samlMessage - the SAML message
      Throws:
      IOException - if an error occurs storing the information
    • get

      @Nullable SAMLArtifactMap.SAMLArtifactMapEntry get​(@Nonnull @NotEmpty String artifact) throws IOException
      Gets the artifact entry for the given artifact.
      Parameters:
      artifact - the artifact to retrieve the entry for
      Returns:
      the entry, or null if the artifact has already expired or did not exist
      Throws:
      IOException - if an error occurs retrieving the information
    • remove

      void remove​(@Nonnull @NotEmpty String artifact) throws IOException
      Removes the artifact from this map.
      Parameters:
      artifact - artifact to be removed
      Throws:
      IOException - if an error occurs retrieving the information