shibboleth-3.4.1
shibsp::SessionInitiator Class Referenceabstract

Pluggable runtime functionality that handles initiating sessions. More...

#include <shibsp/handler/SessionInitiator.h>

Inheritance diagram for shibsp::SessionInitiator:
Collaboration diagram for shibsp::SessionInitiator:

Public Member Functions

virtual const std::set< std::string > & getSupportedOptions () const
 Indicates the set of optional settings supported by the handler.
 
virtual std::pair< bool, long > run (SPRequest &request, std::string &entityID, bool isHandler=true) const =0
 Executes an incoming request.
 
std::pair< bool, long > run (SPRequest &request, bool isHandler=true) const
 Executes handler functionality as an incoming request.
 
const char * remap (const char *src, xmltooling::logging::Category &log) const
 Remap a name (or return it unchanged).
 
const char * getType () const
 Returns the "type" of the Handler plugin.
 
void generateMetadata (opensaml::saml2md::SPSSODescriptor &role, const char *handlerURL) const
 Generates and/or modifies metadata reflecting the Handler.
 
void doGenerateMetadata (opensaml::saml2md::SPSSODescriptor &role, const char *handlerURL) const
 Generates RequestInitiator metadata when instructed.
 
const char * getEventType () const
 Get the type of event, as input to error handling in response to errors raised by this handler.
 
- Public Member Functions inherited from shibsp::Handler
virtual const XMLCh * getProtocolFamily () const
 Returns an identifier for the protocol family associated with the handler, if any.
 
- Public Member Functions inherited from shibsp::PropertySet
virtual const PropertySetgetParent () const =0
 Returns parent of this PropertySet, if any.
 
virtual void setParent (const PropertySet *parent)=0
 Establishes a "parent" PropertySet to supply inherited settings.
 
virtual std::pair< bool, bool > getBool (const char *name, const char *ns=nullptr) const =0
 Returns a boolean-valued property.
 
virtual std::pair< bool, const char * > getString (const char *name, const char *ns=nullptr) const =0
 Returns a string-valued property.
 
virtual std::pair< bool, const XMLCh * > getXMLString (const char *name, const char *ns=nullptr) const =0
 Returns a Unicode string-valued property.
 
virtual std::pair< bool, unsigned int > getUnsignedInt (const char *name, const char *ns=nullptr) const =0
 Returns an unsigned integer-valued property.
 
virtual std::pair< bool, int > getInt (const char *name, const char *ns=nullptr) const =0
 Returns an integer-valued property.
 
virtual const PropertySetgetPropertySet (const char *name, const char *ns=shibspconstants::ASCII_SHIBSPCONFIG_NS) const =0
 Returns a nested property set.
 
virtual const xercesc::DOMElement * getElement () const =0
 Returns a DOM element representing the property container, if any.
 
- Public Member Functions inherited from shibsp::DOMPropertySet::Remapper
virtual ~Remapper ()
 Destructor.
 

Protected Member Functions

bool checkCompatibility (SPRequest &request, bool isHandler) const
 Examines the request and applicable settings to determine whether the handler is able to support the request.
 
virtual AuthnRequestEventnewAuthnRequestEvent (const Application &application, const xmltooling::HTTPRequest *request=nullptr) const
 Creates a new AuthnRequestEvent for the event log.
 
- Protected Member Functions inherited from shibsp::Handler
virtual void log (SPRequest::SPLogLevel level, const std::string &msg) const
 Log using handler's specific logging object.
 
virtual void cleanRelayState (const Application &application, const xmltooling::HTTPRequest &request, xmltooling::HTTPResponse &response) const
 Prevents unused relay state from building up by cleaning old state from the client.
 
virtual void preserveRelayState (const Application &application, xmltooling::HTTPResponse &response, std::string &relayState) const
 Implements various mechanisms to preserve RelayState, such as cookies or StorageService-backed keys.
 
virtual void recoverRelayState (const Application &application, const xmltooling::HTTPRequest &request, xmltooling::HTTPResponse &response, std::string &relayState, bool clear=true) const
 Implements various mechanisms to recover RelayState, such as cookies or StorageService-backed keys.
 
- Protected Member Functions inherited from shibsp::DOMPropertySet::Remapper
 Remapper ()
 Constructor.
 

Protected Attributes

std::set< std::string > m_supportedOptions
 Set of optional settings supported by handler.
 

Friends

void registerSessionInitiators ()
 Registers SessionInitiator implementations.
 

Detailed Description

Pluggable runtime functionality that handles initiating sessions.

By default, SessionInitiators look for an entityID on the incoming request and pass control to the specialized run method.

Member Function Documentation

◆ checkCompatibility()

bool shibsp::SessionInitiator::checkCompatibility ( SPRequest request,
bool  isHandler 
) const
protected

Examines the request and applicable settings to determine whether the handler is able to support the request.

If the handler is within a chain, the method will return false, otherwise an exception will be raised.

Parameters
requestSP request context
isHandlertrue iff executing in the context of a direct handler invocation
Returns
true iff the request appears to be compatible

◆ doGenerateMetadata()

void shibsp::SessionInitiator::doGenerateMetadata ( opensaml::saml2md::SPSSODescriptor &  role,
const char *  handlerURL 
) const

Generates RequestInitiator metadata when instructed.

Allows subclasses to decide whether it's appropriate to do so instead of requiring them to override the method to stop it.

Parameters
rolerole object to inject metadata into
handlerURLbase of endpoint to generate metadata with

◆ generateMetadata()

void shibsp::SessionInitiator::generateMetadata ( opensaml::saml2md::SPSSODescriptor &  role,
const char *  handlerURL 
) const
virtual

Generates and/or modifies metadata reflecting the Handler.

The default implementation does nothing.

Parameters
rolemetadata role to decorate
handlerURLbase location of handler's endpoint

Reimplemented from shibsp::Handler.

◆ getEventType()

const char * shibsp::SessionInitiator::getEventType ( ) const
virtual

Get the type of event, as input to error handling in response to errors raised by this handler.

Returns
an event type for error handling

Reimplemented from shibsp::Handler.

◆ getSupportedOptions()

virtual const std::set< std::string > & shibsp::SessionInitiator::getSupportedOptions ( ) const
virtual

Indicates the set of optional settings supported by the handler.

Returns
a set of the optional settings supported

◆ getType()

const char * shibsp::SessionInitiator::getType ( ) const
virtual

Returns the "type" of the Handler plugin.

Returns
a Handler type

Reimplemented from shibsp::Handler.

◆ newAuthnRequestEvent()

virtual AuthnRequestEvent * shibsp::SessionInitiator::newAuthnRequestEvent ( const Application application,
const xmltooling::HTTPRequest *  request = nullptr 
) const
protectedvirtual

Creates a new AuthnRequestEvent for the event log.

Parameters
applicationthe Application associated with the event
requestthe HTTP client request associated with the event, or nullptr
Returns
a fresh AuthnRequestEvent, prepopulated by the input parameters, or nullptr if an error occurs

◆ remap()

const char * shibsp::SessionInitiator::remap ( const char *  src,
xmltooling::logging::Category &  log 
) const
virtual

Remap a name (or return it unchanged).

Parameters
srcoriginal name
loglogger to use
Returns
the name to use

Implements shibsp::DOMPropertySet::Remapper.

◆ run() [1/2]

std::pair< bool, long > shibsp::SessionInitiator::run ( SPRequest request,
bool  isHandler = true 
) const
virtual

Executes handler functionality as an incoming request.

Handlers can be run either directly by incoming web requests or indirectly/implicitly during other SP processing.

Parameters
requestSP request context
isHandlertrue iff executing in the context of a direct handler invocation
Returns
a pair containing a "request completed" indicator and a server-specific response code

Implements shibsp::Handler.

◆ run() [2/2]

virtual std::pair< bool, long > shibsp::SessionInitiator::run ( SPRequest request,
std::string &  entityID,
bool  isHandler = true 
) const
pure virtual

Executes an incoming request.

SessionInitiators can be run either directly by incoming web requests or indirectly/implicitly during other SP processing.

Parameters
requestSP request context
entityIDthe name of an IdP to request a session from, if known
isHandlertrue iff executing in the context of a direct handler invocation
Returns
a pair containing a "request completed" indicator and a server-specific response code

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