#include <shibsp/exceptions.h>\r
#include <shibsp/SPConfig.h>\r
#include <shibsp/ServiceProvider.h>\r
+#include <shibsp/binding/SOAPClient.h>\r
#include <shibsp/util/SPConstants.h>\r
\r
#include <saml/binding/SecurityPolicy.h>\r
}\r
\r
ServiceProvider* sp=conf.getServiceProvider();\r
- xmltooling::Locker locker(sp);\r
+ sp->lock();\r
\r
try {\r
const Application* app=sp->getApplication(a_param);\r
else\r
throw MetadataException("No AttributeAuthority role found in metadata.");\r
\r
- QName role(samlconstants::SAML20P_NS, AttributeAuthorityDescriptor::LOCAL_NAME);\r
- SecurityPolicy policy(sp->getPolicyRules(), m, &role, app->getTrustEngine());\r
+ SecurityPolicy policy;\r
+ shibsp::SOAPClient soaper(*app,policy);\r
\r
if (ver == v20) {\r
auto_ptr_XMLCh binding(samlconstants::SAML20_BINDING_SOAP);\r
- SAML2SOAPClient soaper(policy,true);\r
opensaml::saml2p::StatusResponseType* srt=NULL;\r
const vector<AttributeService*>& endpoints=AA->getAttributeServices();\r
for (vector<AttributeService*>::const_iterator ep=endpoints.begin(); !srt && ep!=endpoints.end(); ++ep) {\r
subject->setNameID(nameid);\r
query->setSubject(subject);\r
query->setIssuer(iss);\r
- auto_ptr<opensaml::saml2p::AttributeQuery> wrapper(query);\r
- soaper.sendSAML(query, *AA, loc.get());\r
- wrapper.release(); // freed by SOAP client\r
- srt = soaper.receiveSAML();\r
+ SAML2SOAPClient client(soaper);\r
+ client.sendSAML(query, *AA, loc.get());\r
+ srt = client.receiveSAML();\r
}\r
catch (exception& ex) {\r
cerr << ex.what() << endl;\r
}\r
else {\r
auto_ptr_XMLCh binding(samlconstants::SAML1_BINDING_SOAP);\r
- SAML1SOAPClient soaper(policy,true);\r
const opensaml::saml1p::Response* response=NULL;\r
const vector<AttributeService*>& endpoints=AA->getAttributeServices();\r
for (vector<AttributeService*>::const_iterator ep=endpoints.begin(); !response && ep!=endpoints.end(); ++ep) {\r
query->setSubject(subject);\r
query->setResource(issuer.get());\r
request->setMinorVersion(ver==v11 ? 1 : 0);\r
- auto_ptr<Request> wrapper(request);\r
- soaper.sendSAML(request, *AA, loc.get());\r
- wrapper.release(); // freed by SOAP client\r
- response = soaper.receiveSAML();\r
+ SAML1SOAPClient client(soaper);\r
+ client.sendSAML(request, *AA, loc.get());\r
+ response = client.receiveSAML();\r
}\r
catch (exception& ex) {\r
cerr << ex.what() << endl;\r
cerr << ex.what() << endl;\r
}\r
\r
+ sp->unlock();\r
conf.term();\r
return 0;\r
}\r