Class HttpSessionStore

java.lang.Object
org.pac4j.saml.store.HttpSessionStore
All Implemented Interfaces:
org.pac4j.core.store.Store<String,org.opensaml.core.xml.XMLObject>, SAMLMessageStore

public class HttpSessionStore extends Object implements SAMLMessageStore
Class implements store of SAML messages and uses HttpSession as underlying dataStore. As the XMLObjects can't be serialized (which could lead to problems during failover), the messages are transformed into SAMLObject which internally marshals the content into XML during serialization. Messages are populated to a Hashtable and stored inside HttpSession. The Hashtable is lazily initialized during first attempt to create or retrieve a message.
Author:
Vladimir Schäfer
  • Constructor Details

    • HttpSessionStore

      public HttpSessionStore()
  • Method Details

    • set

      public void set(String messageID, org.opensaml.core.xml.XMLObject message)
      Stores a request message into the repository. RequestAbstractType must have an ID set. Any previous message with the same ID will be overwritten.
      Specified by:
      set in interface org.pac4j.core.store.Store<String,org.opensaml.core.xml.XMLObject>
    • get

      public Optional<org.opensaml.core.xml.XMLObject> get(String messageID)
      Returns previously stored message with the given ID or null, if there is no message stored.

      Message is stored in String format and must be unmarshalled into XMLObject. Call to this method may thus be expensive.

      Messages are automatically cleared upon successful reception, as we presume that there are never multiple ongoing SAML exchanges for the same session. This saves memory used by the session.

      Specified by:
      get in interface org.pac4j.core.store.Store<String,org.opensaml.core.xml.XMLObject>
    • remove

      public void remove(String key)
      Specified by:
      remove in interface org.pac4j.core.store.Store<String,org.opensaml.core.xml.XMLObject>