Change some defaults.
[shibboleth/sp.git] / fastcgi / shibauthorizer.cpp
index e626d3c..f0fd99e 100644 (file)
@@ -33,6 +33,7 @@
 #include <xmltooling/XMLToolingConfig.h>\r
 #include <xmltooling/util/NDC.h>\r
 #include <xmltooling/util/XMLConstants.h>\r
+#include <xmltooling/util/XMLHelper.h>\r
 #include <xercesc/util/XMLUniDefs.hpp>\r
 \r
 #include <stdexcept>\r
@@ -66,7 +67,8 @@ class ShibTargetFCGIAuth : public AbstractSPRequest
 public:\r
     map<string,string> m_request_headers;\r
 \r
-    ShibTargetFCGIAuth(FCGX_Request* req, const char* scheme=NULL, const char* hostname=NULL, int port=0) : m_req(req) {\r
+    ShibTargetFCGIAuth(FCGX_Request* req, const char* scheme=NULL, const char* hostname=NULL, int port=0)\r
+            : AbstractSPRequest(SHIBSP_LOGCAT".FastCGI"), m_req(req) {\r
         const char* server_name_str = hostname;\r
         if (!server_name_str || !*server_name_str)\r
             server_name_str = FCGX_GetParam("SERVER_NAME", req->envp);\r
@@ -86,6 +88,8 @@ public:
         if (!server_scheme_str || !*server_scheme_str)\r
             server_scheme_str = (m_port == 443 || m_port == 8443) ? "https" : "http";\r
         m_scheme = server_scheme_str;\r
+\r
+        setRequestURI(FCGX_GetParam("REQUEST_URI", m_req->envp));\r
     }\r
 \r
     ~ShibTargetFCGIAuth() { }\r
@@ -99,9 +103,6 @@ public:
     int getPort() const {\r
         return m_port;\r
     }\r
-    const char* getRequestURI() const {\r
-        return FCGX_GetParam("REQUEST_URI", m_req->envp);\r
-    }\r
     const char* getMethod() const {\r
         return FCGX_GetParam("REQUEST_METHOD", m_req->envp);\r
     }\r
@@ -178,8 +179,9 @@ public:
         // so custom Shib errors will get turned into a generic page.\r
         const char* codestr="Status: 500 Server Error";\r
         switch (status) {\r
-            case XMLTOOLING_HTTP_STATUS_FORBIDDEN:   codestr="Status: 403 Forbidden"; break;\r
-            case XMLTOOLING_HTTP_STATUS_NOTFOUND:   codestr="Status: 404 Not Found"; break;\r
+            case XMLTOOLING_HTTP_STATUS_UNAUTHORIZED:   codestr="Status: 401 Authorization Required"; break;\r
+            case XMLTOOLING_HTTP_STATUS_FORBIDDEN:      codestr="Status: 403 Forbidden"; break;\r
+            case XMLTOOLING_HTTP_STATUS_NOTFOUND:       codestr="Status: 404 Not Found"; break;\r
         }\r
         cout << codestr << "\r\n" << hdr << "\r\n";\r
         char buf[1024];\r