+SAMLDSSessionInitiator::SAMLDSSessionInitiator(const DOMElement* e, const char* appId)
+ : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT ".SessionInitiator.SAMLDS")), m_url(nullptr), m_returnParam(nullptr)
+{
+ pair<bool,const char*> url = getString("URL");
+ if (!url.first)
+ throw ConfigurationException("SAMLDS SessionInitiator requires a URL property.");
+ m_url = url.second;
+ url = getString("entityIDParam");
+ if (url.first)
+ m_returnParam = url.second;
+
+ pair<bool,const char*> options = getString("preservedOptions");
+ if (options.first) {
+ string opt = options.second;
+ trim(opt);
+ split(m_preservedOptions, opt, is_space(), algorithm::token_compress_on);
+ }
+ else {
+ m_preservedOptions.push_back("isPassive");
+ m_preservedOptions.push_back("forceAuthn");
+ m_preservedOptions.push_back("authnContextClassRef");
+ m_preservedOptions.push_back("authnContextComparison");
+ m_preservedOptions.push_back("NameIDFormat");
+ m_preservedOptions.push_back("SPNameQualifier");
+ m_preservedOptions.push_back("acsIndex");
+ }
+
+ m_supportedOptions.insert("isPassive");
+}
+
+pair<bool,long> SAMLDSSessionInitiator::run(SPRequest& request, string& entityID, bool isHandler) const