shibboleth-3.2.0

shibsp::AssertionConsumerService Class Reference

Base class for handlers that create sessions by consuming SSO protocol responses. More...

#include <shibsp/handler/AssertionConsumerService.h>

Inheritance diagram for shibsp::AssertionConsumerService:
shibsp::AbstractHandler shibsp::RemotedHandler shibsp::Handler shibsp::DOMPropertySet shibsp::Handler shibsp::Remoted shibsp::PropertySet shibsp::PropertySet shibsp::PropertySet

List of all members.

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.
const XMLCh * getProtocolFamily () const
 Returns an identifier for the protocol family associated with the handler, if any.
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

 AssertionConsumerService (const xercesc::DOMElement *e, const char *appId, xmltooling::logging::Category &log, xercesc::DOMNodeFilter *filter=nullptr, const Remapper *remapper=nullptr, bool deprecationSupport=true)
 Constructor.
void checkAddress (const Application &application, const xmltooling::HTTPRequest &httpRequest, const char *issuedTo) const
 Enforce address checking requirements.
virtual std::pair< bool, long > finalizeResponse (const Application &application, const xmltooling::HTTPRequest &httpRequest, xmltooling::HTTPResponse &httpResponse, std::string &relayState) const
 Complete the client's transition back to the expected resource.
void generateMetadata (opensaml::saml2md::SPSSODescriptor &role, const char *handlerURL) const
 Generates and/or modifies metadata reflecting the Handler.
virtual const char * getProfile () const
 Returns a profile identifier to inject into the SecurityPolicy created by the base class.
virtual void implementProtocol (const Application &application, const xmltooling::HTTPRequest &httpRequest, xmltooling::HTTPResponse &httpResponse, opensaml::SecurityPolicy &policy, const PropertySet *reserved, 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.
ResolutionContextresolveAttributes (const Application &application, const xmltooling::GenericRequest *request=nullptr, const opensaml::saml2md::RoleDescriptor *issuer=nullptr, const XMLCh *protocol=nullptr, const xmltooling::XMLObject *protmsg=nullptr, const opensaml::saml1::NameIdentifier *v1nameid=nullptr, const opensaml::saml1::AuthenticationStatement *v1statement=nullptr, const opensaml::saml2::NameID *nameid=nullptr, const opensaml::saml2::AuthnStatement *statement=nullptr, const XMLCh *authncontext_class=nullptr, const XMLCh *authncontext_decl=nullptr, const std::vector< const opensaml::Assertion * > *tokens=nullptr) const
 Attempt SSO-initiated attribute resolution using the supplied information, including NameID and token extraction and filtering followed by secondary resolution.
virtual LoginEventnewLoginEvent (const Application &application, const xmltooling::HTTPRequest &request) const
 Creates a new LoginEvent for the event log.

Detailed Description

Base class for handlers that create sessions by consuming SSO protocol responses.


Constructor & Destructor Documentation

shibsp::AssertionConsumerService::AssertionConsumerService ( const xercesc::DOMElement *  e,
const char *  appId,
xmltooling::logging::Category &  log,
xercesc::DOMNodeFilter *  filter = nullptr,
const Remapper remapper = nullptr,
bool  deprecationSupport = true 
) [protected]

Constructor.

Parameters:
eroot of DOM configuration
appIdID of application that "owns" the handler
loga logging object to use
filteroptional filter controls what child elements to include as nested PropertySets
remapperoptional property rename mapper for legacy property support
deprecationSupporttrue iff deprecated settings and features should be supported

Member Function Documentation

void shibsp::AssertionConsumerService::checkAddress ( const Application application,
const xmltooling::HTTPRequest &  httpRequest,
const char *  issuedTo 
) const [protected]

Enforce address checking requirements.

Parameters:
applicationreference to application receiving message
httpRequestclient request that initiated session
issuedToaddress for which security assertion was issued
virtual void shibsp::AssertionConsumerService::extractMessageDetails ( const opensaml::Assertion &  assertion,
const XMLCh *  protocol,
opensaml::SecurityPolicy &  policy 
) const [protected, virtual]

Extracts policy-relevant assertion details.

Parameters:
assertionthe incoming assertion
protocolthe protocol family in use
policySecurityPolicy to provide various components and track message data
virtual std::pair<bool,long> shibsp::AssertionConsumerService::finalizeResponse ( const Application application,
const xmltooling::HTTPRequest &  httpRequest,
xmltooling::HTTPResponse &  httpResponse,
std::string &  relayState 
) const [protected, virtual]

Complete the client's transition back to the expected resource.

Parameters:
applicationreference to application receiving message
httpRequestclient request that included message
httpResponseresponse to client
relayStaterelay state token
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.

Parameters:
rolemetadata role to decorate
handlerURLbase location of handler's endpoint

Reimplemented from shibsp::Handler.

const char* shibsp::AssertionConsumerService::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 const char* shibsp::AssertionConsumerService::getProfile ( ) const [protected, virtual]

Returns a profile identifier to inject into the SecurityPolicy created by the base class.

Returns:
profile identifier if any
const XMLCh* shibsp::AssertionConsumerService::getProtocolFamily ( ) const [virtual]

Returns an identifier for the protocol family associated with the handler, if any.

Returns:
a protocol identifier, or nullptr

Reimplemented from shibsp::Handler.

const char* shibsp::AssertionConsumerService::getType ( ) const [virtual]

Returns the "type" of the Handler plugin.

Returns:
a Handler type

Reimplemented from shibsp::Handler.

virtual void shibsp::AssertionConsumerService::implementProtocol ( const Application application,
const xmltooling::HTTPRequest &  httpRequest,
xmltooling::HTTPResponse &  httpResponse,
opensaml::SecurityPolicy &  policy,
const PropertySet reserved,
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.

Parameters:
applicationreference to application receiving message
httpRequestclient request that included message
httpResponseresponse to client
policythe SecurityPolicy in effect, after having evaluated the message
reservedignore this parameter
xmlObjecta protocol-specific message object
virtual LoginEvent* shibsp::AssertionConsumerService::newLoginEvent ( const Application application,
const xmltooling::HTTPRequest &  request 
) const [protected, virtual]

Creates a new LoginEvent for the event log.

Parameters:
applicationthe Application associated with the event
requestthe HTTP client request associated with the event
Returns:
a fresh LoginEvent, prepopulated by the input parameters, or nullptr if an error occurs
void shibsp::AssertionConsumerService::receive ( DDF in,
std::ostream &  out 
) [virtual]

Remoted classes implement this method to process incoming messages.

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

Implements shibsp::Remoted.

ResolutionContext* shibsp::AssertionConsumerService::resolveAttributes ( const Application application,
const xmltooling::GenericRequest *  request = nullptr,
const opensaml::saml2md::RoleDescriptor *  issuer = nullptr,
const XMLCh *  protocol = nullptr,
const xmltooling::XMLObject *  protmsg = nullptr,
const opensaml::saml1::NameIdentifier *  v1nameid = nullptr,
const opensaml::saml1::AuthenticationStatement *  v1statement = nullptr,
const opensaml::saml2::NameID *  nameid = nullptr,
const opensaml::saml2::AuthnStatement *  statement = nullptr,
const XMLCh *  authncontext_class = nullptr,
const XMLCh *  authncontext_decl = nullptr,
const std::vector< const opensaml::Assertion * > *  tokens = nullptr 
) 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.

Parameters:
applicationreference to application receiving message
requestrequest delivering message, if any
issuersource of SSO tokens
protocolSSO protocol used
protmsgSSO protocol message, if any
v1nameididentifier of principal in SAML 1.x form, if any
v1statementSAML 1.x authentication statement, if any
nameididentifier of principal in SAML 2.0 form
statementSAML 2.0 authentication statement, if any
authncontext_classmethod/category of authentication event, if known
authncontext_declspecifics of authentication event, if known
tokensavailable 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.

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.


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