Package org.pac4j.saml.store
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
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 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 Summary
-
Constructor Summary
ConstructorDescriptionHttpSessionStore
(org.pac4j.core.context.WebContext context, org.pac4j.core.context.session.SessionStore sessionStore) Creates the store object. -
Method Summary
Modifier and TypeMethodDescriptionOptional<org.opensaml.core.xml.XMLObject>
Returns previously stored message with the given ID or null, if there is no message stored.void
void
Stores a request message into the repository.
-
Field Details
-
log
protected final org.slf4j.Logger logClass logger.
-
-
Constructor Details
-
HttpSessionStore
public HttpSessionStore(org.pac4j.core.context.WebContext context, org.pac4j.core.context.session.SessionStore sessionStore) Creates the store 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
- the web contextsessionStore
- the session store
-
-
Method Details
-
set
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 interfaceorg.pac4j.core.store.Store<String,
org.opensaml.core.xml.XMLObject> - Parameters:
messageID
- ID of messagemessage
- message to be stored
-
get
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 interfaceorg.pac4j.core.store.Store<String,
org.opensaml.core.xml.XMLObject> - Parameters:
messageID
- ID of message to retrieve- Returns:
- message found or null
-
remove
- Specified by:
remove
in interfaceorg.pac4j.core.store.Store<String,
org.opensaml.core.xml.XMLObject>
-