From 819e0caf684df63378460e4cb00f2f7a38c9a5cf Mon Sep 17 00:00:00 2001 From: cantor Date: Thu, 16 Aug 2007 03:20:00 +0000 Subject: [PATCH] Add "sender" to SOAP APIs to avoid reuse of connections across apps. git-svn-id: https://svn.middleware.georgetown.edu/cpp-opensaml2/trunk@294 fb386ef7-a10c-0410-8ebf-fd3f8e989ab0 --- saml/binding/SOAPClient.h | 7 ++++--- saml/binding/impl/SOAPClient.cpp | 8 ++++---- saml/saml1/binding/SAML1SOAPClient.h | 5 +++-- saml/saml1/binding/impl/SAML1SOAPClient.cpp | 4 ++-- saml/saml2/binding/SAML2SOAPClient.h | 5 +++-- saml/saml2/binding/impl/SAML2SOAPClient.cpp | 4 ++-- 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/saml/binding/SOAPClient.h b/saml/binding/SOAPClient.h index 52a7845..8fd00e1 100644 --- a/saml/binding/SOAPClient.h +++ b/saml/binding/SOAPClient.h @@ -61,15 +61,16 @@ namespace opensaml { using soap11::SOAPClient::send; /** - * SAML-specific method uses a RoleDescriptor to determine the peer name and prepare the + * SAML-specific method uses metadata to determine the peer name and prepare the * transport layer with peer credential information. The SecurityPolicy is also reset, * in case the policy is reused. * * @param env SOAP envelope to send - * @param peer peer to send message to, expressed in metadata criteria terms + * @param from identity of sending application + * @param to peer to send message to, expressed in metadata criteria terms * @param endpoint URL of endpoint to recieve message */ - virtual void send(const soap11::Envelope& env, saml2md::MetadataCredentialCriteria& peer, const char* endpoint); + virtual void send(const soap11::Envelope& env, const char* from, saml2md::MetadataCredentialCriteria& to, const char* endpoint); /** * Override applies SecurityPolicy to envelope before returning it. diff --git a/saml/binding/impl/SOAPClient.cpp b/saml/binding/impl/SOAPClient.cpp index feff377..73081ec 100644 --- a/saml/binding/impl/SOAPClient.cpp +++ b/saml/binding/impl/SOAPClient.cpp @@ -37,13 +37,13 @@ using namespace opensaml; using namespace xmltooling; using namespace std; -void SOAPClient::send(const soap11::Envelope& env, MetadataCredentialCriteria& peer, const char* endpoint) +void SOAPClient::send(const soap11::Envelope& env, const char* from, MetadataCredentialCriteria& to, const char* endpoint) { // Clear policy. m_policy.reset(); - m_criteria = &peer; - m_peer = &(peer.getRole()); + m_criteria = &to; + m_peer = &(to.getRole()); const QName& role = m_peer->getElementQName(); if (XMLString::equals(role.getLocalPart(),RoleDescriptor::LOCAL_NAME)) @@ -52,7 +52,7 @@ void SOAPClient::send(const soap11::Envelope& env, MetadataCredentialCriteria& p m_policy.setRole(&role); auto_ptr_char pn(dynamic_cast(m_peer->getParent())->getEntityID()); - soap11::SOAPClient::send(env, pn.get(), endpoint); + soap11::SOAPClient::send(env, SOAPTransport::Address(from, pn.get(), endpoint)); } void SOAPClient::prepareTransport(xmltooling::SOAPTransport& transport) diff --git a/saml/saml1/binding/SAML1SOAPClient.h b/saml/saml1/binding/SAML1SOAPClient.h index 832603d..c039649 100644 --- a/saml/saml1/binding/SAML1SOAPClient.h +++ b/saml/saml1/binding/SAML1SOAPClient.h @@ -59,10 +59,11 @@ namespace opensaml { *

The request will be freed by the client object regardless of the outcome. * * @param request SAML request to send - * @param peer peer to send message to, expressed in metadata criteria terms + * @param from identity of sending application + * @param to peer to send message to, expressed in metadata criteria terms * @param endpoint URL of endpoint to recieve message */ - virtual void sendSAML(Request* request, saml2md::MetadataCredentialCriteria& peer, const char* endpoint); + virtual void sendSAML(Request* request, const char* from, saml2md::MetadataCredentialCriteria& to, const char* endpoint); /** * Specialized method for receiving SAML 1.x responses. The SOAP layer will be diff --git a/saml/saml1/binding/impl/SAML1SOAPClient.cpp b/saml/saml1/binding/impl/SAML1SOAPClient.cpp index 9984d2b..9a6527b 100644 --- a/saml/saml1/binding/impl/SAML1SOAPClient.cpp +++ b/saml/saml1/binding/impl/SAML1SOAPClient.cpp @@ -37,13 +37,13 @@ using namespace xmltooling::logging; using namespace xmltooling; using namespace std; -void SAML1SOAPClient::sendSAML(Request* request, MetadataCredentialCriteria& peer, const char* endpoint) +void SAML1SOAPClient::sendSAML(Request* request, const char* from, MetadataCredentialCriteria& to, const char* endpoint) { auto_ptr env(EnvelopeBuilder::buildEnvelope()); Body* body = BodyBuilder::buildBody(); env->setBody(body); body->getUnknownXMLObjects().push_back(request); - m_soaper.send(*env.get(), peer, endpoint); + m_soaper.send(*env.get(), from, to, endpoint); m_correlate = XMLString::replicate(request->getRequestID()); } diff --git a/saml/saml2/binding/SAML2SOAPClient.h b/saml/saml2/binding/SAML2SOAPClient.h index 4981c2e..c5d35cc 100644 --- a/saml/saml2/binding/SAML2SOAPClient.h +++ b/saml/saml2/binding/SAML2SOAPClient.h @@ -59,10 +59,11 @@ namespace opensaml { *

The request will be freed by the client object regardless of the outcome. * * @param request SAML request to send - * @param peer peer to send message to, expressed in metadata criteria terms + * @param to peer to send message to, expressed in metadata criteria terms + * @param from identity of sending application * @param endpoint URL of endpoint to recieve message */ - virtual void sendSAML(RequestAbstractType* request, saml2md::MetadataCredentialCriteria& peer, const char* endpoint); + virtual void sendSAML(RequestAbstractType* request, const char* from, saml2md::MetadataCredentialCriteria& to, const char* endpoint); /** * Specialized method for receiving SAML 2.0 responses. The SOAP layer will be diff --git a/saml/saml2/binding/impl/SAML2SOAPClient.cpp b/saml/saml2/binding/impl/SAML2SOAPClient.cpp index 08cba6d..626b607 100644 --- a/saml/saml2/binding/impl/SAML2SOAPClient.cpp +++ b/saml/saml2/binding/impl/SAML2SOAPClient.cpp @@ -37,13 +37,13 @@ using namespace xmltooling::logging; using namespace xmltooling; using namespace std; -void SAML2SOAPClient::sendSAML(RequestAbstractType* request, MetadataCredentialCriteria& peer, const char* endpoint) +void SAML2SOAPClient::sendSAML(RequestAbstractType* request, const char* from, MetadataCredentialCriteria& to, const char* endpoint) { auto_ptr env(EnvelopeBuilder::buildEnvelope()); Body* body = BodyBuilder::buildBody(); env->setBody(body); body->getUnknownXMLObjects().push_back(request); - m_soaper.send(*env.get(), peer, endpoint); + m_soaper.send(*env.get(), from, to, endpoint); m_correlate = XMLString::replicate(request->getID()); } -- 2.1.4