X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=blobdiff_plain;f=saml%2Fsaml1%2Fbinding%2Fimpl%2FSAML1POSTEncoder.cpp;h=d362a3da71a0abd8665e4bd48fbb64f86725252c;hp=df0ee433110cfb96952df377202167f679e3daba;hb=07dbbcf3a8fc0aba6fefe741f1760442a0a6ea65;hpb=43a515d64c2780e71b3328205ccef1ce6e276cb4 diff --git a/saml/saml1/binding/impl/SAML1POSTEncoder.cpp b/saml/saml1/binding/impl/SAML1POSTEncoder.cpp index df0ee43..d362a3d 100644 --- a/saml/saml1/binding/impl/SAML1POSTEncoder.cpp +++ b/saml/saml1/binding/impl/SAML1POSTEncoder.cpp @@ -29,8 +29,10 @@ #include #include #include +#include #include #include +#include #include using namespace opensaml::saml1p; @@ -84,6 +86,7 @@ SAML1POSTEncoder::SAML1POSTEncoder(const DOMElement* e, const XMLCh* ns) } if (m_template.empty()) throw XMLToolingException("SAML1POSTEncoder requires template XML attribute."); + XMLToolingConfig::getConfig().getPathResolver()->resolve(m_template, PathResolver::XMLTOOLING_CFG_FILE); } long SAML1POSTEncoder::encode( @@ -150,15 +153,19 @@ long SAML1POSTEncoder::encode( TemplateEngine::TemplateParameters pmap; string& xmlbuf = pmap.m_map["SAMLResponse"]; XMLHelper::serialize(rootElement, xmlbuf); - log.debug("marshalled response: %s", xmlbuf.c_str()); + log.debug("marshalled response:\n%s", xmlbuf.c_str()); // Replace with base-64 encoded version. - unsigned int len=0; + xsecsize_t len=0; XMLByte* out=Base64::encode(reinterpret_cast(xmlbuf.data()),xmlbuf.size(),&len); if (out) { xmlbuf.erase(); xmlbuf.append(reinterpret_cast(out),len); +#ifdef OPENSAML_XERCESC_HAS_XMLBYTE_RELEASE XMLString::release(&out); +#else + XMLString::release((char**)&out); +#endif } else { throw BindingException("Base64 encoding of XML failed."); @@ -174,6 +181,12 @@ long SAML1POSTEncoder::encode( stringstream s; engine->run(infile, s, pmap); genericResponse.setContentType("text/html"); + HTTPResponse* httpResponse = dynamic_cast(&genericResponse); + if (httpResponse) { + httpResponse->setResponseHeader("Expires", "01-Jan-1997 12:00:00 GMT"); + httpResponse->setResponseHeader("Cache-Control", "no-cache, no-store, must-revalidate, private"); + httpResponse->setResponseHeader("Pragma", "no-cache"); + } long ret = genericResponse.sendResponse(s); // Cleanup by destroying XML.