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, | |||
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 |
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 |
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.