shibboleth-2.4.3
shibsp::LogoutHandler Class Reference

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

#include <shibsp/handler/LogoutHandler.h>

Inheritance diagram for shibsp::LogoutHandler:
Collaboration diagram for shibsp::LogoutHandler:

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.

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, bool local=true, const char *status=nullptr) const
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.
- Protected Member Functions inherited from shibsp::RemotedHandler
void setAddress (const char *address)
 Establishes message remoting using the supplied address.
DDF wrap (const SPRequest &request, const std::vector< std::string > *headers=nullptr, bool certs=false) const
 Wraps a request by creating an outgoing data flow with the data needed to remote the request information.
virtual std::pair< bool, long > unwrap (SPRequest &request, DDF &out) const
 Unwraps a response by examining an incoming data flow to determine whether a response was produced by the remoted handler.
xmltooling::HTTPRequest * getRequest (DDF &in) const
 Builds a new request instance around a remoted data object.
xmltooling::HTTPResponse * getResponse (DDF &out) const
 Builds a new response instance around an outgoing data object.
- 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 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 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.
- Protected Attributes inherited from shibsp::RemotedHandler
std::string m_address
 Message address for remote half.

Additional Inherited Members

- Static Public Member Functions inherited from shibsp::RemotedHandler
static void addRemotedHeader (const char *header)
 Ensures that a request header will be remoted.

Detailed Description

Base class for logout-related handlers.

Member Function Documentation

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,
bool  local = true,
const char *  status = nullptr 
) const
protected
Deprecated:
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
localtrue iff the logout operation was local to the SP, false iff global
statusoptional logoutStatus key value to add to template
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

bool shibsp::LogoutHandler::m_initiator
protected

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: