/**
* Specialized SOAPClient for SAML SOAP bindings.
*/
- class SAML_API SOAPClient : soap11::SOAPClient
+ class SAML_API SOAPClient : public soap11::SOAPClient
{
public:
/**
* Creates a SOAP client instance with a particular SecurityPolicy.
*
- * @param policy reference to SecurityPolicy to apply
+ * @param policy reference to SecurityPolicy to apply
+ * @param validating controls schema validation
*/
- SOAPClient(SecurityPolicy& policy) : m_policy(policy), m_force(true) {}
+ SOAPClient(SecurityPolicy& policy, bool validating=false)
+ : soap11::SOAPClient(validating), m_policy(policy), m_force(true), m_correlate(NULL) {}
- virtual ~SOAPClient() {}
+ virtual ~SOAPClient() {
+ XMLString::release(&m_correlate);
+ }
/**
* Controls whether to force transport/peer authentication via an X509TrustEngine.
* @return response envelope after SecurityPolicy has been applied
*/
soap11::Envelope* receive();
+
+ void reset();
protected:
/**
/** Flag controlling whether transport/peer authn is mandatory. */
bool m_force;
+ /** Message correlation ID. */
+ XMLCh* m_correlate;
+
private:
const saml2md::RoleDescriptor* m_peer;
};
void SOAPClient::send(const soap11::Envelope* env, const KeyInfoSource& peer, const char* endpoint)
{
// Clear policy.
- m_policy.setIssuer(NULL);
- m_policy.setIssuerMetadata(NULL);
+ m_policy.reset();
m_peer = dynamic_cast<const RoleDescriptor*>(&peer);
}
return env.release();
}
+
+void SOAPClient::reset()
+{
+ soap11::SOAPClient::reset();
+ m_policy.reset();
+ XMLString::release(&m_correlate);
+ m_correlate=NULL;
+}
MinimalRebuild="true"\r
BasicRuntimeChecks="3"\r
RuntimeLibrary="3"\r
- UsePrecompiledHeader="0"\r
BrowseInformation="1"\r
WarningLevel="3"\r
Detect64BitPortabilityProblems="true"\r
AdditionalIncludeDirectories=""$(SolutionDir)";"$(ProjectDir)";"..\..\cpp-xmltooling""\r
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"\r
RuntimeLibrary="2"\r
- UsePrecompiledHeader="0"\r
WarningLevel="3"\r
Detect64BitPortabilityProblems="true"\r
DebugInformationFormat="3"\r
/**
* Specialized SOAPClient for SAML 1.x SOAP binding.
*/
- class SAML_API SAML1SOAPClient : opensaml::SOAPClient
+ class SAML_API SAML1SOAPClient : public opensaml::SOAPClient
{
public:
/**
* Creates a SOAP client instance with a particular SecurityPolicy.
*
- * @param policy reference to SecurityPolicy to apply
+ * @param policy reference to SecurityPolicy to apply
+ * @param validating controls schema validation
*/
- SAML1SOAPClient(SecurityPolicy& policy) : opensaml::SOAPClient(policy), m_correlate(NULL) {}
+ SAML1SOAPClient(SecurityPolicy& policy, bool validating=false) : opensaml::SOAPClient(policy, validating) {}
- virtual ~SAML1SOAPClient() {
- XMLString::release(&m_correlate);
- }
+ virtual ~SAML1SOAPClient() {}
/**
* Specialized method for sending SAML 1.x requests. The SOAP layer will be
* @return true iff the error should be treated as a fatal error
*/
virtual bool handleError(const Status& status);
-
- private:
- XMLCh* m_correlate;
};
};
/**
* Creates a SOAP client instance with a particular SecurityPolicy.
*
- * @param policy reference to SecurityPolicy to apply
+ * @param policy reference to SecurityPolicy to apply
+ * @param validating controls schema validation
*/
- SAML2SOAPClient(SecurityPolicy& policy) : opensaml::SOAPClient(policy), m_correlate(NULL) {}
+ SAML2SOAPClient(SecurityPolicy& policy, bool validating=false) : opensaml::SOAPClient(policy, validating) {}
- virtual ~SAML2SOAPClient() {
- XMLString::release(&m_correlate);
- }
+ virtual ~SAML2SOAPClient() {}
/**
* Specialized method for sending SAML 2.0 requests. The SOAP layer will be
* @return true iff the error should be treated as a fatal error
*/
virtual bool handleError(const Status& status);
-
- private:
- XMLCh* m_correlate;
};
};
MinimalRebuild="true"\r
BasicRuntimeChecks="3"\r
RuntimeLibrary="3"\r
- UsePrecompiledHeader="0"\r
BrowseInformation="1"\r
WarningLevel="3"\r
Detect64BitPortabilityProblems="true"\r
AdditionalIncludeDirectories=""$(SolutionDir)";"$(ProjectDir)";"..\..\cpp-xmltooling""\r
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE=1"\r
RuntimeLibrary="2"\r
- UsePrecompiledHeader="0"\r
WarningLevel="3"\r
Detect64BitPortabilityProblems="true"\r
DebugInformationFormat="3"\r