Check for logout
This commit is contained in:
@@ -38,6 +38,7 @@ from saml2.httputil import NotImplemented
|
||||
from saml2.response import StatusError
|
||||
from saml2.response import VerificationError
|
||||
from saml2.s_utils import UnknownPrincipal
|
||||
from saml2.s_utils import decode_base64_and_inflate
|
||||
from saml2.s_utils import UnsupportedBinding
|
||||
from saml2.s_utils import sid
|
||||
from saml2.s_utils import rndstr
|
||||
@@ -633,8 +634,18 @@ class SLO(Service):
|
||||
self.sp = sp
|
||||
self.cache = cache
|
||||
|
||||
def do(self, response, binding, relay_state="", mtype="response"):
|
||||
req_info = self.sp.parse_logout_request_response(response, binding)
|
||||
def do(self, message, binding, relay_state="", mtype="response"):
|
||||
try:
|
||||
txt = decode_base64_and_inflate(message)
|
||||
is_logout_request = 'LogoutRequest' in txt.split('>', 1)[0]
|
||||
except: # TODO: parse the XML correctly
|
||||
is_logout_request = False
|
||||
|
||||
if is_logout_request:
|
||||
self.sp.parse_logout_request(message, binding)
|
||||
else:
|
||||
self.sp.parse_logout_request_response(message, binding)
|
||||
|
||||
return finish_logout(self.environ, self.start_response)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user