shibboleth-3.0.3

shibsp::LogoutHandler Class Reference

Base class for logout-related handlers. More...

#include <shibsp/handler/LogoutHandler.h>

Inheritance diagram for shibsp::LogoutHandler:
shibsp::RemotedHandler shibsp::Handler shibsp::Remoted shibsp::PropertySet shibsp::LogoutInitiator

List of all members.

Public Member Functions

std::pair< bool, long > run (SPRequest &request, bool isHandler=true) const
 The base method will iteratively attempt front-channel notification of logout of the current session, and after the final round trip will perform back-channel notification.
void receive (DDF &in, std::ostream &out)
 A remoted procedure that will perform any necessary back-channel notifications.
const char * getEventType () const
 Get the type of event, as input to error handling in response to errors raised by this handler.

Protected Member Functions

std::pair< bool, long > notifyFrontChannel (const Application &application, const xmltooling::HTTPRequest &request, xmltooling::HTTPResponse &response, const std::map< std::string, std::string > *params=nullptr) const
 Perform front-channel logout notifications for an Application.
bool notifyBackChannel (const Application &application, const char *requestURL, const std::vector< std::string > &sessions, bool local) const
 Perform back-channel logout notifications for an Application.
std::pair< bool, long > sendLogoutPage (const Application &application, const xmltooling::HTTPRequest &request, xmltooling::HTTPResponse &response, const char *type) const
 Sends a response template to the user agent informing it of the results of a logout attempt.
virtual LogoutEventnewLogoutEvent (const Application &application, const xmltooling::HTTPRequest *request=nullptr, const Session *session=nullptr) const
 Creates a new LogoutEvent for the event log.

Protected Attributes

bool m_initiator
 Flag indicating whether the subclass is acting as a LogoutInitiator.
std::vector< std::string > m_preserve
 Array of query string parameters to preserve across front-channel notifications, if present.

Detailed Description

Base class for logout-related handlers.


Member Function Documentation

const char* shibsp::LogoutHandler::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.

virtual LogoutEvent* shibsp::LogoutHandler::newLogoutEvent ( const Application application,
const xmltooling::HTTPRequest *  request = nullptr,
const Session session = nullptr 
) const [protected, virtual]

Creates a new LogoutEvent for the event log.

Parameters:
applicationthe Application associated with the event
requestthe HTTP client request associated with the event, or nullptr
sessionthe user session associated with the event, or nullptr
Returns:
a fresh LogoutEvent, prepopulated by the input parameters, or nullptr if an error occurs
bool shibsp::LogoutHandler::notifyBackChannel ( const Application application,
const char *  requestURL,
const std::vector< std::string > &  sessions,
bool  local 
) const [protected]

Perform back-channel logout notifications for an Application.

Parameters:
applicationthe Application to notify
requestURLrequestURL that resulted in method call
sessionsarray of session keys being logged out
localtrue iff the logout operation is local to the SP, false iff global
Returns:
true iff all notifications succeeded
std::pair<bool,long> shibsp::LogoutHandler::notifyFrontChannel ( const Application application,
const xmltooling::HTTPRequest &  request,
xmltooling::HTTPResponse &  response,
const std::map< std::string, std::string > *  params = nullptr 
) const [protected]

Perform front-channel logout notifications for an Application.

Parameters:
applicationthe Application to notify
requestlast request from browser
responseresponse to use for next notification
paramsmap of query string parameters to preserve across this notification
Returns:
indicator of a completed response along with the status code to return from the handler
void shibsp::LogoutHandler::receive ( DDF in,
std::ostream &  out 
) [virtual]

A remoted procedure that will perform any necessary back-channel notifications.

The input structure must contain an "application_id" member, and a "sessions" list containing the session keys, along with an integer member called "notify" with a value of 1.

Parameters:
inincoming DDF message
outstream to write outgoing DDF message to

Implements shibsp::Remoted.

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

The base method will iteratively attempt front-channel notification of logout of the current session, and after the final round trip will perform back-channel notification.

Nothing will be done unless the handler detects that it is the "top" level logout handler. If the method returns false, then the specialized class should perform its work assuming that the notifications are completed.

Note that the current session is NOT removed from the cache.

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.

std::pair<bool,long> shibsp::LogoutHandler::sendLogoutPage ( const Application application,
const xmltooling::HTTPRequest &  request,
xmltooling::HTTPResponse &  response,
const char *  type 
) const [protected]

Sends a response template to the user agent informing it of the results of a logout attempt.

Parameters:
applicationthe Application to use in determining the logout template
requestthe HTTP client request to supply to the template
responsethe HTTP response to use
typedesignates the prefix of logout template name to use

Member Data Documentation

Flag indicating whether the subclass is acting as a LogoutInitiator.

std::vector<std::string> shibsp::LogoutHandler::m_preserve [protected]

Array of query string parameters to preserve across front-channel notifications, if present.


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