shibboleth-3.2.3
shibsp::SSCache Class Reference
Inheritance diagram for shibsp::SSCache:
shibsp::SessionCache shibsp::Remoted

Public Member Functions

 SSCache (const xercesc::DOMElement *e, bool deprecationSupport)
 
void receive (DDF &in, std::ostream &out)
 Remoted classes implement this method to process incoming messages. More...
 
void insert (std::string &sessionID, const Application &app, const xmltooling::HTTPRequest &httpRequest, xmltooling::HTTPResponse &httpResponse, time_t expires, const opensaml::saml2md::EntityDescriptor *issuer=nullptr, const XMLCh *protocol=nullptr, const opensaml::saml2::NameID *nameid=nullptr, const XMLCh *authn_instant=nullptr, const XMLCh *session_index=nullptr, const XMLCh *authncontext_class=nullptr, const XMLCh *authncontext_decl=nullptr, const std::vector< const opensaml::Assertion * > *tokens=nullptr, const std::vector< Attribute * > *attributes=nullptr)
 Inserts a new session into the cache and binds the session to the outgoing client response. More...
 
std::vector< std::string >
::size_type 
logout (const Application &app, const opensaml::saml2md::EntityDescriptor *issuer, const opensaml::saml2::NameID &nameid, const std::set< std::string > *indexes, time_t expires, std::vector< std::string > &sessions)
 Returns active sessions that match particular parameters and records the logout to prevent race conditions. More...
 
bool matches (const Application &app, xmltooling::HTTPRequest &request, const opensaml::saml2md::EntityDescriptor *issuer, const opensaml::saml2::NameID &nameid, const std::set< std::string > *indexes)
 Determines whether the Session bound to a client request matches a set of input criteria. More...
 
std::string active (const Application &app, const xmltooling::HTTPRequest &request)
 Returns the ID of the session bound to the specified client request, if possible. More...
 
Sessionfind (const Application &app, xmltooling::HTTPRequest &request, const char *client_addr=nullptr, time_t *timeout=nullptr)
 Locates an existing session bound to a request. More...
 
void remove (const Application &app, const xmltooling::HTTPRequest &request, xmltooling::HTTPResponse *response=nullptr, time_t revocationExp=0)
 Deletes an existing session bound to a request. More...
 
Sessionfind (const Application &app, const char *key)
 Locates an existing session by ID. More...
 
void remove (const Application &app, const char *key, time_t revocationExp=0)
 Deletes an existing session. More...
 
void test ()
 Executes a test of the cache's general health.
 
unsigned long getCacheTimeout (const Application &app) const
 

Friends

class StoredSession
 

Member Function Documentation

std::string shibsp::SSCache::active ( const Application application,
const xmltooling::HTTPRequest &  request 
)
virtual

Returns the ID of the session bound to the specified client request, if possible.

Parameters
applicationreference to Application that owns the Session
requestrequest from client containing session, or a reference to it
Returns
ID of session, if any known, or an empty string

Implements shibsp::SessionCache.

Session* shibsp::SSCache::find ( const Application application,
xmltooling::HTTPRequest &  request,
const char *  client_addr = nullptr,
time_t *  timeout = nullptr 
)
virtual

Locates an existing session bound to a request.

If the client address is supplied, then a check will be performed against the address recorded in the record.

If a bound session is found to have expired, be invalid, etc., and if the request can be used to "clear" the session from subsequent client requests, then it may be cleared.

Parameters
applicationreference to Application that owns the Session
requestrequest from client bound to session
client_addrnetwork address of client (if known)
timeoutinactivity timeout to enforce (0 for none, nullptr to bypass check/update of last access)
Returns
pointer to locked Session, or nullptr

Implements shibsp::SessionCache.

Session* shibsp::SSCache::find ( const Application application,
const char *  key 
)
inlinevirtual

Locates an existing session by ID.

Parameters
applicationreference to Application that owns the Session
keysession key
Returns
pointer to locked Session, or nullptr

Implements shibsp::SessionCache.

void shibsp::SSCache::insert ( std::string &  sessionID,
const Application application,
const xmltooling::HTTPRequest &  httpRequest,
xmltooling::HTTPResponse &  httpResponse,
time_t  expires,
const opensaml::saml2md::EntityDescriptor *  issuer = nullptr,
const XMLCh *  protocol = nullptr,
const opensaml::saml2::NameID *  nameid = nullptr,
const XMLCh *  authn_instant = nullptr,
const XMLCh *  session_index = nullptr,
const XMLCh *  authncontext_class = nullptr,
const XMLCh *  authncontext_decl = nullptr,
const std::vector< const opensaml::Assertion * > *  tokens = nullptr,
const std::vector< Attribute * > *  attributes = nullptr 
)
virtual

Inserts a new session into the cache and binds the session to the outgoing client response.

The newly created session ID is placed into the first parameter.

The SSO tokens and Attributes remain owned by the caller and are copied by the cache.

Parameters
sessionIDreference to string to capture newly inserted session ID
applicationreference to Application that owns the Session
httpRequestrequest that initiated session
httpResponsecurrent response to client
expiresexpiration time of session
issuerissuing metadata of assertion issuer, if known
protocolprotocol family used to initiate the session
nameidprincipal identifier, normalized to SAML 2, if any
authn_instantUTC timestamp of authentication at IdP, if known
session_indexindex of session between principal and IdP, if any
authncontext_classmethod/category of authentication event, if known
authncontext_declspecifics of authentication event, if known
tokensassertions to cache with session, if any
attributesoptional array of resolved Attributes to cache with session

Implements shibsp::SessionCache.

std::vector<std::string>::size_type shibsp::SSCache::logout ( const Application application,
const opensaml::saml2md::EntityDescriptor *  issuer,
const opensaml::saml2::NameID &  nameid,
const std::set< std::string > *  indexes,
time_t  expires,
std::vector< std::string > &  sessions 
)
inlinevirtual

Returns active sessions that match particular parameters and records the logout to prevent race conditions.

On exit, the mapping between these sessions and the associated information MAY be removed by the cache, so subsequent calls to this method may not return anything.

Until logout expiration, any attempt to create a session with the same parameters will be blocked by the cache.

Parameters
applicationreference to Application that owns the session(s)
issuersource of session(s)
nameidname identifier associated with the session(s) to terminate
indexesindexes of sessions, or nullptr for all sessions associated with other parameters
expireslogout expiration
sessionson exit, contains the IDs of the matching sessions found

Implements shibsp::SessionCache.

bool shibsp::SSCache::matches ( const Application application,
xmltooling::HTTPRequest &  request,
const opensaml::saml2md::EntityDescriptor *  issuer,
const opensaml::saml2::NameID &  nameid,
const std::set< std::string > *  indexes 
)
virtual

Determines whether the Session bound to a client request matches a set of input criteria.

Parameters
applicationreference to Application that owns the Session
requestrequest in which to locate Session
issuerrequired source of session(s)
nameidrequired name identifier
indexessession indexes
Returns
true iff the Session exists and matches the input criteria

Implements shibsp::SessionCache.

void shibsp::SSCache::receive ( DDF in,
std::ostream &  out 
)
virtual

Remoted classes implement this method to process incoming messages.

Parameters
inincoming DDF message
outstream to write outgoing DDF message to

Implements shibsp::Remoted.

void shibsp::SSCache::remove ( const Application application,
const xmltooling::HTTPRequest &  request,
xmltooling::HTTPResponse *  response = nullptr,
time_t  revocationExp = 0 
)
virtual

Deletes an existing session bound to a request.

Revocation may be supported by some implementations.

Parameters
applicationreference to Application that owns the Session
requestrequest from client containing session, or a reference to it
responseoptional response to client enabling removal of session or reference
revocationExpoptional indicator for length of time to track revocation of this session

Implements shibsp::SessionCache.

void shibsp::SSCache::remove ( const Application application,
const char *  key,
time_t  revocationExp = 0 
)
virtual

Deletes an existing session.

Revocation may be supported by some implementations.

Parameters
applicationreference to Application that owns the Session
keysession key
revocationExpoptional indicator for length of time to track revocation of this session

Implements shibsp::SessionCache.


The documentation for this class was generated from the following file: