diff --git a/djangosaml2/views.py b/djangosaml2/views.py index cb812295..7351cd1c 100644 --- a/djangosaml2/views.py +++ b/djangosaml2/views.py @@ -28,8 +28,9 @@ from django.template import TemplateDoesNotExist from django.utils.http import is_safe_url from django.views.decorators.csrf import csrf_exempt -from django.views.decorators.http import require_POST -from saml2 import BINDING_HTTP_POST, BINDING_HTTP_REDIRECT +from saml2 import BINDING_HTTP_REDIRECT, BINDING_HTTP_POST +from saml2.client_base import LogoutError +from saml2.metadata import entity_descriptor from saml2.ident import code, decode from saml2.metadata import entity_descriptor from saml2.response import (SignatureError, StatusAuthnFailed, StatusError, @@ -376,7 +377,13 @@ def logout(request, config_loader_path=None): 'The session does not contain the subject id for user %s', request.user) - result = client.global_logout(subject_id) + try: + result = client.global_logout(subject_id) + except LogoutError as exp: + logger.exception('Error Handled - SLO not supported by IDP: {}'.format(exp)) + auth.logout(request) + state.sync() + return HttpResponseRedirect('/') state.sync()