shibboleth-2.3.1
|
Base class for handlers that create sessions by consuming SSO protocol responses. More...
#include <shibsp/handler/AssertionConsumerService.h>
Public Member Functions | |
std::pair< bool, long > | run (SPRequest &request, bool isHandler=true) const |
Executes handler functionality as an incoming request. | |
void | receive (DDF &in, std::ostream &out) |
Remoted classes implement this method to process incoming messages. | |
const char * | getType () const |
Returns the "type" of the Handler plugin. | |
Protected Member Functions | |
AssertionConsumerService (const xercesc::DOMElement *e, const char *appId, xmltooling::logging::Category &log, xercesc::DOMNodeFilter *filter=NULL, const std::map< std::string, std::string > *remapper=NULL) | |
Constructor. | |
void | checkAddress (const Application &application, const xmltooling::HTTPRequest &httpRequest, const char *issuedTo) const |
Enforce address checking requirements. | |
void | generateMetadata (opensaml::saml2md::SPSSODescriptor &role, const char *handlerURL) const |
Generates and/or modifies metadata reflecting the Handler. | |
virtual opensaml::SecurityPolicy * | createSecurityPolicy (const Application &application, const xmltooling::QName *role, bool validate, const char *policyId) const |
Returns a SecurityPolicy instance to use for an incoming request. | |
virtual void | implementProtocol (const Application &application, const xmltooling::HTTPRequest &httpRequest, xmltooling::HTTPResponse &httpResponse, opensaml::SecurityPolicy &policy, const PropertySet *settings, const xmltooling::XMLObject &xmlObject) const =0 |
Implement protocol-specific handling of the incoming decoded message. | |
virtual void | extractMessageDetails (const opensaml::Assertion &assertion, const XMLCh *protocol, opensaml::SecurityPolicy &policy) const |
Extracts policy-relevant assertion details. | |
ResolutionContext * | resolveAttributes (const Application &application, const opensaml::saml2md::RoleDescriptor *issuer=NULL, const XMLCh *protocol=NULL, const opensaml::saml1::NameIdentifier *v1nameid=NULL, const opensaml::saml2::NameID *nameid=NULL, const XMLCh *authncontext_class=NULL, const XMLCh *authncontext_decl=NULL, const std::vector< const opensaml::Assertion * > *tokens=NULL) const |
Attempt SSO-initiated attribute resolution using the supplied information, including NameID and token extraction and filtering followed by secondary resolution. |
Base class for handlers that create sessions by consuming SSO protocol responses.
shibsp::AssertionConsumerService::AssertionConsumerService | ( | const xercesc::DOMElement * | e, |
const char * | appId, | ||
xmltooling::logging::Category & | log, | ||
xercesc::DOMNodeFilter * | filter = NULL , |
||
const std::map< std::string, std::string > * | remapper = NULL |
||
) | [protected] |
Constructor.
e | root of DOM configuration |
appId | ID of application that "owns" the handler |
log | a logging object 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 |
void shibsp::AssertionConsumerService::checkAddress | ( | const Application & | application, |
const xmltooling::HTTPRequest & | httpRequest, | ||
const char * | issuedTo | ||
) | const [protected] |
Enforce address checking requirements.
application | reference to application receiving message |
httpRequest | client request that initiated session |
issuedTo | address for which security assertion was issued |
virtual opensaml::SecurityPolicy* shibsp::AssertionConsumerService::createSecurityPolicy | ( | const Application & | application, |
const xmltooling::QName * | role, | ||
bool | validate, | ||
const char * | policyId | ||
) | const [protected, virtual] |
Returns a SecurityPolicy instance to use for an incoming request.
Allows handlers to customize the type of policy object their policy rules might require.
The caller MUST lock the application's MetadataProvider for the life of the returned object.
application | reference to application receiving message |
role | identifies the role (generally IdP or SP) of the policy peer |
validate | true iff XML parsing should be done with validation |
policyId | identifies policy rules to auto-attach, defaults to the application's set |
virtual void shibsp::AssertionConsumerService::extractMessageDetails | ( | const opensaml::Assertion & | assertion, |
const XMLCh * | protocol, | ||
opensaml::SecurityPolicy & | policy | ||
) | const [protected, virtual] |
Extracts policy-relevant assertion details.
assertion | the incoming assertion |
protocol | the protocol family in use |
policy | SecurityPolicy to provide various components and track message data |
void shibsp::AssertionConsumerService::generateMetadata | ( | opensaml::saml2md::SPSSODescriptor & | role, |
const char * | handlerURL | ||
) | const [protected, virtual] |
Generates and/or modifies metadata reflecting the Handler.
The default implementation does nothing.
role | metadata role to decorate |
handlerURL | base location of handler's endpoint |
Reimplemented from shibsp::Handler.
const char* shibsp::AssertionConsumerService::getType | ( | ) | const [virtual] |
Returns the "type" of the Handler plugin.
Reimplemented from shibsp::Handler.
virtual void shibsp::AssertionConsumerService::implementProtocol | ( | const Application & | application, |
const xmltooling::HTTPRequest & | httpRequest, | ||
xmltooling::HTTPResponse & | httpResponse, | ||
opensaml::SecurityPolicy & | policy, | ||
const PropertySet * | settings, | ||
const xmltooling::XMLObject & | xmlObject | ||
) | const [protected, pure virtual] |
Implement protocol-specific handling of the incoming decoded message.
The result of implementing the protocol should be an exception or modifications to the request/response objects to reflect processing of the message.
application | reference to application receiving message |
httpRequest | client request that included message |
httpResponse | response to client |
policy | the SecurityPolicy in effect, after having evaluated the message |
settings | policy configuration settings in effect |
xmlObject | a protocol-specific message object |
void shibsp::AssertionConsumerService::receive | ( | DDF & | in, |
std::ostream & | out | ||
) | [virtual] |
Remoted classes implement this method to process incoming messages.
Implements shibsp::Remoted.
ResolutionContext* shibsp::AssertionConsumerService::resolveAttributes | ( | const Application & | application, |
const opensaml::saml2md::RoleDescriptor * | issuer = NULL , |
||
const XMLCh * | protocol = NULL , |
||
const opensaml::saml1::NameIdentifier * | v1nameid = NULL , |
||
const opensaml::saml2::NameID * | nameid = NULL , |
||
const XMLCh * | authncontext_class = NULL , |
||
const XMLCh * | authncontext_decl = NULL , |
||
const std::vector< const opensaml::Assertion * > * | tokens = NULL |
||
) | const [protected] |
Attempt SSO-initiated attribute resolution using the supplied information, including NameID and token extraction and filtering followed by secondary resolution.
The caller must free the returned context handle.
application | reference to application receiving message |
issuer | source of SSO tokens |
protocol | SSO protocol used |
v1nameid | identifier of principal in SAML 1.x form, if any |
nameid | identifier of principal in SAML 2.0 form |
authncontext_class | method/category of authentication event, if known |
authncontext_decl | specifics of authentication event, if known |
tokens | available assertions, if any |
std::pair<bool,long> shibsp::AssertionConsumerService::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.
request | SP request context |
isHandler | true iff executing in the context of a direct handler invocation |
Implements shibsp::Handler.