Class HttpSessionStorage

  • All Implemented Interfaces:
    SAMLMessageStorage

    public class HttpSessionStorage
    extends Object
    implements SAMLMessageStorage
    Class implements storage 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 marshalls 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
    • Field Detail

      • log

        protected final org.slf4j.Logger log
        Class logger.
    • Constructor Detail

      • HttpSessionStorage

        public HttpSessionStorage​(WebContext context)
        Creates the storage object. The session is manipulated only once caller tries to store or retrieve a message. In case request doesn't already have a started session, it will be created.
        Parameters:
        context - context to load/store internalMessages from
    • Method Detail

      • storeMessage

        public void storeMessage​(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:
        storeMessage in interface SAMLMessageStorage
        Parameters:
        messageID - ID of message
        message - message to be stored
      • retrieveMessage

        public org.opensaml.core.xml.XMLObject retrieveMessage​(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:
        retrieveMessage in interface SAMLMessageStorage
        Parameters:
        messageID - ID of message to retrieve
        Returns:
        message found or null