shibboleth-2.6.1
|
Base class for handlers based on a DOMPropertySet. More...
#include <shibsp/handler/AbstractHandler.h>
Protected Types | |
enum | PropertySourceTypes { HANDLER_PROPERTY_REQUEST = 1, HANDLER_PROPERTY_MAP = 2, HANDLER_PROPERTY_FIXED = 4, HANDLER_PROPERTY_ALL = 255 } |
Bitmask of property sources to read from (request query parameter, request mapper, fixed handler property). | |
Protected Member Functions | |
AbstractHandler (const xercesc::DOMElement *e, xmltooling::logging::Category &log, xercesc::DOMNodeFilter *filter=nullptr, const std::map< std::string, std::string > *remapper=nullptr) | |
Constructor. | |
void | log (SPRequest::SPLogLevel level, const std::string &msg) const |
Log using handler's specific logging object. | |
virtual void | checkError (const xmltooling::XMLObject *response, const opensaml::saml2md::RoleDescriptor *role=nullptr) const |
Examines a protocol response message for errors and raises an annotated exception if an error is found. | |
void | fillStatus (opensaml::saml2p::StatusResponseType &response, const XMLCh *code, const XMLCh *subcode=nullptr, const char *msg=nullptr) const |
Prepares Status information in a SAML 2.0 response. | |
long | sendMessage (const opensaml::MessageEncoder &encoder, xmltooling::XMLObject *msg, const char *relayState, const char *destination, const opensaml::saml2md::RoleDescriptor *role, const Application &application, xmltooling::HTTPResponse &httpResponse, const char *defaultSigningProperty) const |
Encodes and sends SAML 2.0 message, optionally signing it in the process. | |
long | sendMessage (const opensaml::MessageEncoder &encoder, xmltooling::XMLObject *msg, const char *relayState, const char *destination, const opensaml::saml2md::RoleDescriptor *role, const Application &application, xmltooling::HTTPResponse &httpResponse, bool signIfPossible=false) const |
virtual void | preservePostData (const Application &application, const xmltooling::HTTPRequest &request, xmltooling::HTTPResponse &response, const char *relayState) const |
Implements a mechanism to preserve form post data. | |
virtual DDF | recoverPostData (const Application &application, const xmltooling::HTTPRequest &request, xmltooling::HTTPResponse &response, const char *relayState) const |
Implements storage service and cookie mechanism to recover PostData. | |
virtual long | sendPostResponse (const Application &application, xmltooling::HTTPResponse &response, const char *url, DDF &postData) const |
Post a redirect response with post data. | |
std::pair< bool, bool > | getBool (const char *name, const xmltooling::HTTPRequest &request, unsigned int type=HANDLER_PROPERTY_ALL) const |
Returns a boolean-valued property. | |
std::pair< bool, const char * > | getString (const char *name, const xmltooling::HTTPRequest &request, unsigned int type=HANDLER_PROPERTY_ALL) const |
Returns a string-valued property. | |
std::pair< bool, unsigned int > | getUnsignedInt (const char *name, const xmltooling::HTTPRequest &request, unsigned int type=HANDLER_PROPERTY_ALL) const |
Returns an unsigned integer-valued property. | |
std::pair< bool, int > | getInt (const char *name, const xmltooling::HTTPRequest &request, unsigned int type=HANDLER_PROPERTY_ALL) const |
Returns an integer-valued property. | |
Protected Attributes | |
xmltooling::logging::Category & | m_log |
Logging object. | |
xmltooling::auto_ptr_char | m_configNS |
Configuration namespace for custom properties. |
Base class for handlers based on a DOMPropertySet.
shibsp::AbstractHandler::AbstractHandler | ( | const xercesc::DOMElement * | e, |
xmltooling::logging::Category & | log, | ||
xercesc::DOMNodeFilter * | filter = nullptr , |
||
const std::map< std::string, std::string > * | remapper = nullptr |
||
) | [protected] |
Constructor.
e | DOM element to load as property set. |
log | logging category to use |
filter | optional filter controls what child elements to include as nested PropertySets |
remapper | optional map of property rename rules for legacy property support |
virtual void shibsp::AbstractHandler::checkError | ( | const xmltooling::XMLObject * | response, |
const opensaml::saml2md::RoleDescriptor * | role = nullptr |
||
) | const [protected, virtual] |
Examines a protocol response message for errors and raises an annotated exception if an error is found.
The base class version understands SAML 1.x and SAML 2.0 responses.
response | a response message of some known protocol |
role | issuer of message |
void shibsp::AbstractHandler::fillStatus | ( | opensaml::saml2p::StatusResponseType & | response, |
const XMLCh * | code, | ||
const XMLCh * | subcode = nullptr , |
||
const char * | msg = nullptr |
||
) | const [protected] |
Prepares Status information in a SAML 2.0 response.
response | SAML 2.0 response message |
code | SAML status code |
subcode | optional SAML substatus code |
msg | optional message to pass back |
std::pair<bool,bool> shibsp::AbstractHandler::getBool | ( | const char * | name, |
const xmltooling::HTTPRequest & | request, | ||
unsigned int | type = HANDLER_PROPERTY_ALL |
||
) | const [protected] |
Returns a boolean-valued property.
name | property name |
request | reference to incoming request |
type | bitmask of property sources to use |
std::pair<bool,int> shibsp::AbstractHandler::getInt | ( | const char * | name, |
const xmltooling::HTTPRequest & | request, | ||
unsigned int | type = HANDLER_PROPERTY_ALL |
||
) | const [protected] |
Returns an integer-valued property.
name | property name |
request | reference to incoming request |
type | bitmask of property sources to use |
std::pair<bool,const char*> shibsp::AbstractHandler::getString | ( | const char * | name, |
const xmltooling::HTTPRequest & | request, | ||
unsigned int | type = HANDLER_PROPERTY_ALL |
||
) | const [protected] |
Returns a string-valued property.
name | property name |
request | reference to incoming request |
type | bitmask of property sources to use |
std::pair<bool,unsigned int> shibsp::AbstractHandler::getUnsignedInt | ( | const char * | name, |
const xmltooling::HTTPRequest & | request, | ||
unsigned int | type = HANDLER_PROPERTY_ALL |
||
) | const [protected] |
Returns an unsigned integer-valued property.
name | property name |
request | reference to incoming request |
type | bitmask of property sources to use |
void shibsp::AbstractHandler::log | ( | SPRequest::SPLogLevel | level, |
const std::string & | msg | ||
) | const [protected, virtual] |
Log using handler's specific logging object.
level | logging level |
msg | message to log |
Reimplemented from shibsp::Handler.
virtual void shibsp::AbstractHandler::preservePostData | ( | const Application & | application, |
const xmltooling::HTTPRequest & | request, | ||
xmltooling::HTTPResponse & | response, | ||
const char * | relayState | ||
) | const [protected, virtual] |
Implements a mechanism to preserve form post data.
application | the associated Application |
request | incoming HTTP request |
response | outgoing HTTP response |
relayState | relay state information attached to current sequence, if any |
virtual DDF shibsp::AbstractHandler::recoverPostData | ( | const Application & | application, |
const xmltooling::HTTPRequest & | request, | ||
xmltooling::HTTPResponse & | response, | ||
const char * | relayState | ||
) | const [protected, virtual] |
Implements storage service and cookie mechanism to recover PostData.
If a supported mechanism can be identified, the return value will be the recovered state information.
application | the associated Application |
request | incoming HTTP request |
response | outgoing HTTP response |
relayState | relay state information attached to current sequence, if any |
long shibsp::AbstractHandler::sendMessage | ( | const opensaml::MessageEncoder & | encoder, |
xmltooling::XMLObject * | msg, | ||
const char * | relayState, | ||
const char * | destination, | ||
const opensaml::saml2md::RoleDescriptor * | role, | ||
const Application & | application, | ||
xmltooling::HTTPResponse & | httpResponse, | ||
const char * | defaultSigningProperty | ||
) | const [protected] |
Encodes and sends SAML 2.0 message, optionally signing it in the process.
If the method returns, the message MUST NOT be freed by the caller.
encoder | the MessageEncoder to use |
msg | the message to send |
relayState | any RelayState to include with the message |
destination | location to send message, if not a backchannel response |
role | recipient of message, if known |
application | the Application sending the message |
httpResponse | channel for sending message |
defaultSigningProperty | the effective value of the "signing" property if unset |
long shibsp::AbstractHandler::sendMessage | ( | const opensaml::MessageEncoder & | encoder, |
xmltooling::XMLObject * | msg, | ||
const char * | relayState, | ||
const char * | destination, | ||
const opensaml::saml2md::RoleDescriptor * | role, | ||
const Application & | application, | ||
xmltooling::HTTPResponse & | httpResponse, | ||
bool | signIfPossible = false |
||
) | const [protected] |
Encodes and sends SAML 2.0 message, optionally signing it in the process. If the method returns, the message MUST NOT be freed by the caller.
encoder | the MessageEncoder to use |
msg | the message to send |
relayState | any RelayState to include with the message |
destination | location to send message, if not a backchannel response |
role | recipient of message, if known |
application | the Application sending the message |
httpResponse | channel for sending message |
signIfPossible | true iff signing should be attempted regardless of "signing" property |
virtual long shibsp::AbstractHandler::sendPostResponse | ( | const Application & | application, |
xmltooling::HTTPResponse & | response, | ||
const char * | url, | ||
DDF & | postData | ||
) | const [protected, virtual] |
Post a redirect response with post data.
application | the associated Application |
response | outgoing HTTP response |
url | action url for the form |
postData | list of parameters to load into the form, as DDF string members |
xmltooling::auto_ptr_char shibsp::AbstractHandler::m_configNS [protected] |
Configuration namespace for custom properties.
xmltooling::logging::Category& shibsp::AbstractHandler::m_log [protected] |
Logging object.