X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=shibsp%2Fhandler%2Fimpl%2FSessionInitiator.cpp;h=1d415707334ce405991a0f362fa350baf2d37e66;hb=6811e40cc92f24e0c9c7e6ab2265a862b0a84b51;hp=32f8028240747d4c8a7f619777471a7ff5f018b5;hpb=3031c89c1e9110c5da7710b5694ff863d29ae28c;p=shibboleth%2Fsp.git diff --git a/shibsp/handler/impl/SessionInitiator.cpp b/shibsp/handler/impl/SessionInitiator.cpp index 32f8028..1d41570 100644 --- a/shibsp/handler/impl/SessionInitiator.cpp +++ b/shibsp/handler/impl/SessionInitiator.cpp @@ -29,11 +29,14 @@ using namespace xmltooling; using namespace std; namespace shibsp { - SHIBSP_DLLLOCAL PluginManager>::Factory ChainingSessionInitiatorFactory; - SHIBSP_DLLLOCAL PluginManager>::Factory Shib1SessionInitiatorFactory; - SHIBSP_DLLLOCAL PluginManager>::Factory SAML2SessionInitiatorFactory; - 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() @@ -43,7 +46,9 @@ void SHIBSP_API shibsp::registerSessionInitiators() 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 @@ -56,8 +61,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); }