[cpp-sp] branch master updated: SSPCPP-822 - LogoutRequest handling should take Reason attribute into account

Scott Cantor cantor.2 at osu.edu
Wed Jul 18 13:21:25 EDT 2018


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch master
in repository cpp-sp.

View the commit online:
http://git.shibboleth.net/view/?p=cpp-sp.git;a=commit;h=318d7ff4a2d434e29b09c87c9a3a056198714764

The following commit(s) were added to refs/heads/master by this push:
       new  318d7ff   SSPCPP-822 - LogoutRequest handling should take Reason attribute into account
318d7ff is described below

commit 318d7ff4a2d434e29b09c87c9a3a056198714764
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Jul 18 13:20:20 2018 -0400

    SSPCPP-822 - LogoutRequest handling should take Reason attribute into account
    
    https://issues.shibboleth.net/jira/browse/SSPCPP-822
---
 shibsp/handler/impl/SAML2Logout.cpp | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/shibsp/handler/impl/SAML2Logout.cpp b/shibsp/handler/impl/SAML2Logout.cpp
index c163732..fb03d1a 100644
--- a/shibsp/handler/impl/SAML2Logout.cpp
+++ b/shibsp/handler/impl/SAML2Logout.cpp
@@ -261,7 +261,7 @@ void SAML2Logout::receive(DDF& in, ostream& out)
 pair<bool,long> SAML2Logout::doRequest(const Application& application, HTTPRequest& request, HTTPResponse& response) const
 {
 #ifndef SHIBSP_LITE
-    // First capture the active session ID.
+    // First capture the active session ID, if any.
     SessionCache* cache = application.getServiceProvider().getSessionCache();
     string session_id = cache->active(application, request);
 
@@ -438,10 +438,11 @@ pair<bool,long> SAML2Logout::doRequest(const Application& application, HTTPReque
             indexes.insert(sindex.get());
         }
 
-        // For a front-channel LogoutRequest, we have to match the information in the request
+        // For a front-channel non-admin LogoutRequest, we have to match the information in the request
         // against the current session, if one is known/available.
         if (!session_id.empty()) {
-            if (!cache->matches(application, request, entity, *nameid, &indexes)) {
+            if (!XMLString::equals(logoutRequest->getReason(),LogoutRequest::REASON_ADMIN)
+                    && !cache->matches(application, request, entity, *nameid, &indexes)) {
                 return sendResponse(
                     logout_event.get(),
                     logoutRequest->getID(),

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list