/*
- * Copyright 2001-2005 Internet2
+ * Copyright 2001-2007 Internet2
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#define SHIB_TARGET_H
// New headers
-#include <shibsp/AbstractSPRequest.h>
#include <shibsp/Application.h>
#include <shibsp/Handler.h>
#include <shibsp/RequestMapper.h>
#include <shibsp/ServiceProvider.h>
+#include <shibsp/SessionCache.h>
#include <shibsp/remoting/ListenerService.h>
// Old headers
struct SHIBTARGET_EXPORTS IApplication : public virtual shibsp::Application,
public virtual shibboleth::ShibBrowserProfile::ITokenValidator
{
- virtual saml::Iterator<saml::SAMLAttributeDesignator*> getAttributeDesignators() const=0;
- virtual saml::Iterator<shibboleth::IAAP*> getAAPProviders() const=0;
- virtual saml::Iterator<const XMLCh*> getAudiences() const=0;
-
// caller is borrowing object, must use within scope of config lock
virtual const saml::SAMLBrowserProfile* getBrowserProfile() const=0;
virtual const saml::SAMLBinding* getBinding(const XMLCh* binding) const=0;
const xmltooling::TrustEngine* trust=NULL
) const=0;
- // Used to locate a default or designated session initiator for automatic sessions
- virtual const shibsp::Handler* getDefaultSessionInitiator() const=0;
- virtual const shibsp::Handler* getSessionInitiatorById(const char* id) const=0;
-
- // Used by session initiators to get endpoint to forward to IdP/WAYF
- virtual const shibsp::Handler* getDefaultAssertionConsumerService() const=0;
- virtual const shibsp::Handler* getAssertionConsumerServiceByIndex(unsigned short index) const=0;
- virtual saml::Iterator<const shibsp::Handler*> getAssertionConsumerServicesByBinding(const XMLCh* binding) const=0;
-
- // Used by dispatcher to locate the handler for a request
- virtual const shibsp::Handler* getHandler(const char* path) const=0;
-
virtual ~IApplication() {}
};
* remote and/or optimize calls by implementing custom versions of the
* ISessionCacheEntry interface as required.
*/
- struct SHIBTARGET_EXPORTS ISessionCache : public virtual saml::IPlugIn
+ struct SHIBTARGET_EXPORTS ISessionCache : virtual public shibsp::SessionCache
{
virtual std::string insert(
const IApplication* application,
#define ODBC_REPLAYCACHE "edu.internet2.middleware.shibboleth.sp.provider.ODBCReplayCacheProvider"
- struct SHIBTARGET_EXPORTS IConfig : public virtual shibsp::ServiceProvider
- {
- virtual ISessionCache* getSessionCache() const=0;
- virtual saml::IReplayCache* getReplayCache() const=0;
- virtual ~IConfig() {}
- };
-
class SHIBTARGET_EXPORTS ShibTargetConfig
{
public:
static ShibTargetConfig& getConfig();
};
- class ShibTargetPriv;
- class SHIBTARGET_EXPORTS ShibTarget : public shibsp::AbstractSPRequest {
- public:
- virtual ~ShibTarget() {}
-
- //
- // Note: Subclasses need not implement anything below this line
- //
-
- // These functions implement the server-agnostic shibboleth engine
- // The web server modules implement a subclass and then call into
- // these methods once they instantiate their request object.
- //
- // Return value:
- // these APIs will always return the result of sendPage(), sendRedirect(),
- // returnDecline(), or returnOK() in the void* portion of the return code.
- // Exactly what those values are is module- (subclass-) implementation
- // specific. The 'bool' part of the return value declares whether the
- // void* is valid or not. If the bool is true then the void* is valid.
- // If the bool is false then the API did not call any callback, the void*
- // is not valid, and the caller should continue processing (the API Call
- // finished successfully).
- //
- // The handleProfile argument declares whether doCheckAuthN() should
- // automatically call doHandlePOST() when it encounters a request for
- // the ShireURL; if false it will call returnOK() instead.
- //
- std::pair<bool,long> doCheckAuthN(bool handler = false);
- std::pair<bool,long> doHandler();
- std::pair<bool,long> doCheckAuthZ();
- std::pair<bool,long> doExportAssertions(bool requireSession = true);
-
- protected:
- ShibTarget() {}
-
- private:
- void clearHeaders();
- };
-
}
#endif /* SHIB_TARGET_H */