X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=shibsp%2Fhandler%2Fimpl%2FSessionInitiator.cpp;h=acc194eb0af6ba1f80fbc29d07f2cf90b7740256;hb=1dfa780014d0e9df4651bf7def5a45e9ed31a609;hp=6c4182cf3393cb26e7eee0a82a60950b0cf72599;hpb=69beb4ee1d814fb52eee368e34513590cc578bdb;p=shibboleth%2Fsp.git diff --git a/shibsp/handler/impl/SessionInitiator.cpp b/shibsp/handler/impl/SessionInitiator.cpp index 6c4182c..acc194e 100644 --- a/shibsp/handler/impl/SessionInitiator.cpp +++ b/shibsp/handler/impl/SessionInitiator.cpp @@ -29,10 +29,14 @@ using namespace xmltooling; using namespace std; namespace shibsp { - SHIBSP_DLLLOCAL PluginManager>::Factory ChainingSessionInitiatorFactory; - SHIBSP_DLLLOCAL PluginManager>::Factory Shib1SessionInitiatorFactory; - SHIBSP_DLLLOCAL PluginManager>::Factory WAYFSessionInitiatorFactory; - SHIBSP_DLLLOCAL PluginManager>::Factory SAMLDSSessionInitiatorFactory; + SHIBSP_DLLLOCAL PluginManager< SessionInitiator,string,pair >::Factory ChainingSessionInitiatorFactory; + SHIBSP_DLLLOCAL PluginManager< SessionInitiator,string,pair >::Factory Shib1SessionInitiatorFactory; + SHIBSP_DLLLOCAL PluginManager< SessionInitiator,string,pair >::Factory SAML2SessionInitiatorFactory; + SHIBSP_DLLLOCAL PluginManager< SessionInitiator,string,pair >::Factory WAYFSessionInitiatorFactory; + SHIBSP_DLLLOCAL PluginManager< SessionInitiator,string,pair >::Factory SAMLDSSessionInitiatorFactory; + SHIBSP_DLLLOCAL PluginManager< SessionInitiator,string,pair >::Factory TransformSessionInitiatorFactory; + SHIBSP_DLLLOCAL PluginManager< SessionInitiator,string,pair >::Factory FormSessionInitiatorFactory; + SHIBSP_DLLLOCAL PluginManager< SessionInitiator,string,pair >::Factory CookieSessionInitiatorFactory; }; void SHIBSP_API shibsp::registerSessionInitiators() @@ -40,8 +44,12 @@ void SHIBSP_API shibsp::registerSessionInitiators() SPConfig& conf=SPConfig::getConfig(); conf.SessionInitiatorManager.registerFactory(CHAINING_SESSION_INITIATOR, ChainingSessionInitiatorFactory); conf.SessionInitiatorManager.registerFactory(SHIB1_SESSION_INITIATOR, Shib1SessionInitiatorFactory); + conf.SessionInitiatorManager.registerFactory(SAML2_SESSION_INITIATOR, SAML2SessionInitiatorFactory); conf.SessionInitiatorManager.registerFactory(WAYF_SESSION_INITIATOR, WAYFSessionInitiatorFactory); conf.SessionInitiatorManager.registerFactory(SAMLDS_SESSION_INITIATOR, SAMLDSSessionInitiatorFactory); + conf.SessionInitiatorManager.registerFactory(TRANSFORM_SESSION_INITIATOR, TransformSessionInitiatorFactory); + conf.SessionInitiatorManager.registerFactory(FORM_SESSION_INITIATOR, FormSessionInitiatorFactory); + conf.SessionInitiatorManager.registerFactory(COOKIE_SESSION_INITIATOR, CookieSessionInitiatorFactory); } pair SessionInitiator::run(SPRequest& request, bool isHandler) const @@ -54,8 +62,15 @@ pair SessionInitiator::run(SPRequest& request, bool isHandler) const if (!param.first && (!entityID || !*entityID)) entityID=request.getParameter("providerId"); } + if (!entityID || !*entityID) { + RequestMapper::Settings settings = request.getRequestSettings(); + param = settings.first->getString("entityID"); + if (param.first) + entityID = param.second; + } if (!entityID || !*entityID) entityID=getString("entityID").second; - return run(request, entityID, isHandler); + string copy(entityID ? entityID : ""); + return run(request, copy, isHandler); }