https://issues.shibboleth.net/jira/browse/SSPCPP-187
[shibboleth/cpp-opensaml.git] / saml / saml2 / binding / impl / SAML2ArtifactEncoder.cpp
index 75401c9..ea879a0 100644 (file)
@@ -33,6 +33,7 @@
 #include <xmltooling/logging.h>
 #include <xmltooling/io/HTTPResponse.h>
 #include <xmltooling/util/NDC.h>
+#include <xmltooling/util/PathResolver.h>
 #include <xmltooling/util/TemplateEngine.h>
 #include <xmltooling/util/URLEncoder.h>
 
@@ -86,8 +87,10 @@ SAML2ArtifactEncoder::SAML2ArtifactEncoder(const DOMElement* e, const XMLCh* ns)
         m_post = (flag && (*flag==chLatin_t || *flag==chDigit_1));
         if (m_post) {
             auto_ptr_char t(e->getAttributeNS(ns, _template));
-            if (t.get() && *t.get())
+            if (t.get() && *t.get()) {
                 m_template = t.get();
+                XMLToolingConfig::getConfig().getPathResolver()->resolve(m_template, PathResolver::XMLTOOLING_CFG_FILE);
+            }
         }
     }
 }
@@ -162,6 +165,9 @@ long SAML2ArtifactEncoder::encode(
             xmlObject->marshall((DOMDocument*)NULL,&sigs,credential);
         }
     }
+
+    if (log.isDebugEnabled())
+        log.debugStream() << "marshalled message:" << logging::eol << *xmlObject << logging::eol;
     
     // Store the message. Last step in storage will be to delete the XML.
     log.debug("storing artifact and content in map");
@@ -195,6 +201,9 @@ long SAML2ArtifactEncoder::encode(
         stringstream s;
         engine->run(infile, s, params);
         httpResponse->setContentType("text/html");
+        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");
         return httpResponse->sendResponse(s);
     }
 }