ADFSDecoder() : m_ns(WSTRUST_NS) {}
virtual ~ADFSDecoder() {}
+ const XMLCh* getProtocolFamily() const {
+ return m_ns.get();
+ }
+
XMLObject* decode(string& relayState, const GenericRequest& genericRequest, SecurityPolicy& policy) const;
protected:
pair<bool,long> unwrap(SPRequest& request, DDF& out) const;
pair<bool,long> run(SPRequest& request, string& entityID, bool isHandler=true) const;
+ const XMLCh* getProtocolFamily() const {
+ return m_binding.get();
+ }
+
private:
pair<bool,long> doRequest(
const Application& application,
class SHIBSP_DLLLOCAL ADFSConsumer : public shibsp::AssertionConsumerService
{
+ auto_ptr_XMLCh m_protocol;
public:
ADFSConsumer(const DOMElement* e, const char* appId)
- : shibsp::AssertionConsumerService(e, appId, Category::getInstance(SHIBSP_LOGCAT".SSO.ADFS"))
-#ifndef SHIBSP_LITE
- ,m_protocol(WSFED_NS)
-#endif
- {}
+ : shibsp::AssertionConsumerService(e, appId, Category::getInstance(SHIBSP_LOGCAT".SSO.ADFS")), m_protocol(WSFED_NS) {}
virtual ~ADFSConsumer() {}
#ifndef SHIBSP_LITE
role.addSupport(m_protocol.get());
}
- auto_ptr_XMLCh m_protocol;
-
private:
void implementProtocol(
const Application& application,
const PropertySet*,
const XMLObject& xmlObject
) const;
+#else
+ const XMLCh* getProtocolFamily() const {
+ return m_protocol.get();
+ }
#endif
};
return "LogoutInitiator";
}
#endif
+ const XMLCh* getProtocolFamily() const {
+ return m_binding.get();
+ }
private:
pair<bool,long> doRequest(const Application& application, const HTTPRequest& httpRequest, HTTPResponse& httpResponse, Session* session) const;
auto_ptr_XMLCh widen(hurl.c_str());
SingleLogoutService* ep = SingleLogoutServiceBuilder::buildSingleLogoutService();
ep->setLocation(widen.get());
- ep->setBinding(m_login.m_protocol.get());
+ ep->setBinding(m_login.getProtocolFamily());
role.getSingleLogoutServices().push_back(ep);
}
return m_login.getType();
}
#endif
+ const XMLCh* getProtocolFamily() const {
+ return m_login.getProtocolFamily();
+ }
private:
ADFSConsumer m_login;
}
// Validate the ACS for use with this protocol.
- pair<bool,const XMLCh*> ACSbinding = ACS->getXMLString("Binding");
- if (ACSbinding.first) {
- if (!XMLString::equals(ACSbinding.second, m_binding.get())) {
- m_log.error("configured or requested ACS has non-ADFS binding");
- throw ConfigurationException("Configured or requested ACS has non-ADFS binding ($1).", params(1, ACSbinding.second));
- }
+ if (!XMLString::equals(getProtocolFamily(), ACS->getProtocolFamily())) {
+ m_log.error("configured or requested ACS has non-ADFS binding");
+ throw ConfigurationException("Configured or requested ACS has non-ADFS binding ($1).", params(1, ACS->getString("Binding").second));
}
// Since we're not passing by index, we need to fully compute the return URL.