git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/trunk@2169
cb58f699-b61c-0410-a6fe-
9272a202ed29
signedAssertions="false"
requireConfidentiality="true"
requireTransportAuth="true"
signedAssertions="false"
requireConfidentiality="true"
requireTransportAuth="true"
connectTimeout="15" timeout="30"
>
<Rule type="SAML1Message"/>
connectTimeout="15" timeout="30"
>
<Rule type="SAML1Message"/>
<attribute name="signedAssertions" type="boolean" default="false"/>\r
<attribute name="requireConfidentiality" type="boolean" default="true"/>\r
<attribute name="requireTransportAuth" type="boolean" default="true"/>\r
<attribute name="signedAssertions" type="boolean" default="false"/>\r
<attribute name="requireConfidentiality" type="boolean" default="true"/>\r
<attribute name="requireTransportAuth" type="boolean" default="true"/>\r
+ <attribute name="chunkedEncoding" type="boolean" default="true"/>\r
<attribute name="connectTimeout" type="unsignedShort" default="15"/>\r
<attribute name="timeout" type="unsignedShort" default="30"/>\r
<anyAttribute namespace="##any" processContents="lax"/>\r
<attribute name="connectTimeout" type="unsignedShort" default="15"/>\r
<attribute name="timeout" type="unsignedShort" default="30"/>\r
<anyAttribute namespace="##any" processContents="lax"/>\r
*
* @param transport reference to transport layer
*/
*
* @param transport reference to transport layer
*/
- void prepareTransport(const xmltooling::SOAPTransport& transport);
+ void prepareTransport(xmltooling::SOAPTransport& transport);
/** Application supplied to client. */
const Application& m_app;
/** Application supplied to client. */
const Application& m_app;
using namespace log4cpp;
using namespace std;
using namespace log4cpp;
using namespace std;
+namespace {
+ class SHIBSP_DLLLOCAL _addcert : public binary_function<X509Data*,XSECCryptoX509*,void> {
+ public:
+ void operator()(X509Data* bag, XSECCryptoX509* cert) const {
+ safeBuffer& buf=cert->getDEREncodingSB();
+ X509Certificate* x=X509CertificateBuilder::buildX509Certificate();
+ x->setValue(buf.sbStrToXMLCh());
+ bag->getX509Certificates().push_back(x);
+ }
+ };
+};
+
SOAPClient::SOAPClient(const Application& application, opensaml::SecurityPolicy& policy)
: opensaml::SOAPClient(policy), m_app(application), m_settings(NULL), m_credUse(NULL), m_credResolver(NULL)
{
SOAPClient::SOAPClient(const Application& application, opensaml::SecurityPolicy& policy)
: opensaml::SOAPClient(policy), m_app(application), m_settings(NULL), m_credUse(NULL), m_credResolver(NULL)
{
policy.setTrustEngine(application.getTrustEngine());
}
policy.setTrustEngine(application.getTrustEngine());
}
-namespace {
- class SHIBSP_DLLLOCAL _addcert : public binary_function<X509Data*,XSECCryptoX509*,void> {
- public:
- void operator()(X509Data* bag, XSECCryptoX509* cert) const {
- safeBuffer& buf=cert->getDEREncodingSB();
- X509Certificate* x=X509CertificateBuilder::buildX509Certificate();
- x->setValue(buf.sbStrToXMLCh());
- bag->getX509Certificates().push_back(x);
- }
- };
-};
-
void SOAPClient::send(const soap11::Envelope& env, const KeyInfoSource& peer, const char* endpoint)
{
if (!m_peer)
void SOAPClient::send(const soap11::Envelope& env, const KeyInfoSource& peer, const char* endpoint)
{
if (!m_peer)
opensaml::SOAPClient::send(env, peer, endpoint);
}
opensaml::SOAPClient::send(env, peer, endpoint);
}
-void SOAPClient::prepareTransport(const SOAPTransport& transport)
+void SOAPClient::prepareTransport(SOAPTransport& transport)
{
#ifdef _DEBUG
xmltooling::NDC("prepareTransport");
{
#ifdef _DEBUG
xmltooling::NDC("prepareTransport");
transport.setConnectTimeout(m_settings->getUnsignedInt("connectTimeout").second);
transport.setTimeout(m_settings->getUnsignedInt("timeout").second);
transport.setConnectTimeout(m_settings->getUnsignedInt("connectTimeout").second);
transport.setTimeout(m_settings->getUnsignedInt("timeout").second);
- const HTTPSOAPTransport* http = dynamic_cast<const HTTPSOAPTransport*>(&transport);
- if (http)
+ HTTPSOAPTransport* http = dynamic_cast<HTTPSOAPTransport*>(&transport);
+ if (http) {
+ flag = m_settings->getBool("chunkedEncoding");
+ http->useChunkedEncoding(!flag.first || flag.second);
http->setRequestHeader("Shibboleth", PACKAGE_VERSION);
http->setRequestHeader("Shibboleth", PACKAGE_VERSION);
}
void SOAPClient::reset()
}
void SOAPClient::reset()
SPConfig::Trust |\r
SPConfig::Credentials |\r
SPConfig::AttributeResolver |\r
SPConfig::Trust |\r
SPConfig::Credentials |\r
SPConfig::AttributeResolver |\r
- SPConfig::OutOfProcess |\r
- SPConfig::Caching\r
+ SPConfig::OutOfProcess\r
);\r
if (!conf.init(path))\r
return -10;\r
);\r
if (!conf.init(path))\r
return -10;\r
continue;\r
auto_ptr_char loc((*ep)->getLocation());\r
NameID* nameid = NameIDBuilder::buildNameID();\r
continue;\r
auto_ptr_char loc((*ep)->getLocation());\r
NameID* nameid = NameIDBuilder::buildNameID();\r
- Issuer* iss = IssuerBuilder::buildIssuer();\r
opensaml::saml2::Subject* subject = opensaml::saml2::SubjectBuilder::buildSubject();\r
opensaml::saml2::Subject* subject = opensaml::saml2::SubjectBuilder::buildSubject();\r
+ subject->setNameID(nameid);\r
opensaml::saml2p::AttributeQuery* query = opensaml::saml2p::AttributeQueryBuilder::buildAttributeQuery();\r
opensaml::saml2p::AttributeQuery* query = opensaml::saml2p::AttributeQueryBuilder::buildAttributeQuery();\r
+ query->setSubject(subject);\r
+ Issuer* iss = IssuerBuilder::buildIssuer();\r
+ query->setIssuer(iss);\r
nameid->setName(name.get());\r
nameid->setFormat(format.get() ? format.get() : NameID::TRANSIENT);\r
nameid->setNameQualifier(domain.get());\r
iss->setName(issuer.get());\r
nameid->setName(name.get());\r
nameid->setFormat(format.get() ? format.get() : NameID::TRANSIENT);\r
nameid->setNameQualifier(domain.get());\r
iss->setName(issuer.get());\r
- subject->setNameID(nameid);\r
- query->setSubject(subject);\r
- query->setIssuer(iss);\r
SAML2SOAPClient client(soaper);\r
client.sendSAML(query, *AA, loc.get());\r
srt = client.receiveSAML();\r
}\r
catch (exception& ex) {\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
+ cerr << "Caught exception: " << ex.what() << endl << endl;\r
soaper.reset();\r
}\r
}\r
soaper.reset();\r
}\r
}\r
auto_ptr_char loc((*ep)->getLocation());\r
NameIdentifier* nameid = NameIdentifierBuilder::buildNameIdentifier();\r
opensaml::saml1::Subject* subject = opensaml::saml1::SubjectBuilder::buildSubject();\r
auto_ptr_char loc((*ep)->getLocation());\r
NameIdentifier* nameid = NameIdentifierBuilder::buildNameIdentifier();\r
opensaml::saml1::Subject* subject = opensaml::saml1::SubjectBuilder::buildSubject();\r
+ subject->setNameIdentifier(nameid);\r
opensaml::saml1p::AttributeQuery* query = opensaml::saml1p::AttributeQueryBuilder::buildAttributeQuery();\r
opensaml::saml1p::AttributeQuery* query = opensaml::saml1p::AttributeQueryBuilder::buildAttributeQuery();\r
+ query->setSubject(subject);\r
Request* request = RequestBuilder::buildRequest();\r
Request* request = RequestBuilder::buildRequest();\r
+ request->setAttributeQuery(query);\r
nameid->setName(name.get());\r
nameid->setFormat(format.get() ? format.get() : shibspconstants::SHIB1_NAMEID_FORMAT_URI);\r
nameid->setNameQualifier(domain.get());\r
nameid->setName(name.get());\r
nameid->setFormat(format.get() ? format.get() : shibspconstants::SHIB1_NAMEID_FORMAT_URI);\r
nameid->setNameQualifier(domain.get());\r
- subject->setNameIdentifier(nameid);\r
- query->setSubject(subject);\r
query->setResource(issuer.get());\r
request->setMinorVersion(ver==v11 ? 1 : 0);\r
SAML1SOAPClient client(soaper);\r
query->setResource(issuer.get());\r
request->setMinorVersion(ver==v11 ? 1 : 0);\r
SAML1SOAPClient client(soaper);\r
response = client.receiveSAML();\r
}\r
catch (exception& ex) {\r
response = client.receiveSAML();\r
}\r
catch (exception& ex) {\r
- cerr << ex.what() << endl;\r
+ cerr << "Caught exception: " << ex.what() << endl << endl;\r
soaper.reset();\r
}\r
}\r
soaper.reset();\r
}\r
}\r