Bläddra i källkod

HUE-1590 [core] Make SAML logout optional

Modify dt_logout to skip None responses from backends.
Make libsaml backend return None.
Abraham Elmahrek 12 år sedan
förälder
incheckning
85cb561ff4

+ 3 - 0
desktop/conf.dist/hue.ini

@@ -303,6 +303,9 @@
   ## Username can be sourced from 'attributes' or 'nameid'.
   ## username_source=attributes
 
+  # Performs the logout or not.
+  ## logout_enabled=true
+
 
 ###########################################################################
 # Settings to configure your Hadoop cluster.

+ 3 - 0
desktop/conf/pseudo-distributed.ini.tmpl

@@ -308,6 +308,9 @@
   # Username can be sourced from 'attributes' or 'nameid'.
   ## username_source=attributes
 
+  # Performs the logout or not.
+  ## logout_enabled=true
+
 
 ###########################################################################
 # Settings to configure your Hadoop cluster.

+ 3 - 1
desktop/core/src/desktop/auth/views.py

@@ -138,7 +138,9 @@ def dt_logout(request, next_page=None):
   if backends:
     for backend in backends:
       if hasattr(backend, 'logout'):
-        return backend.logout(request, next_page)
+        response = backend.logout(request, next_page)
+        if response:
+          return response
 
   return django.contrib.auth.views.logout(request, next_page)
 

+ 7 - 3
desktop/libs/libsaml/src/libsaml/backend.py

@@ -23,6 +23,7 @@ from django.contrib.auth.models import User
 from djangosaml2.backends import Saml2Backend as _Saml2Backend
 from djangosaml2.views import logout as saml_logout
 from desktop.auth.backend import rewrite_user
+from libsaml import conf
 from useradmin.models import get_profile, get_default_user_group, UserProfile
 
 
@@ -77,6 +78,9 @@ class SAML2Backend(_Saml2Backend):
     return True
 
   def logout(self, request, next_page=None):
-    response = saml_logout(request)
-    auth_logout(request)
-    return response
+    if conf.LOGOUT_ENABLED.get():
+      response = saml_logout(request)
+      auth_logout(request)
+      return response
+    else:
+      return None

+ 6 - 0
desktop/libs/libsaml/src/libsaml/conf.py

@@ -125,6 +125,12 @@ USERNAME_SOURCE = Config(
   type=str,
   help=_t("Username can be sourced from 'attributes' or 'nameid'"))
 
+LOGOUT_ENABLED = Config(
+  key="logout_enabled",
+  default=True,
+  type=coerce_bool,
+  help=_t("Performs the logout or not."))
+
 
 def config_validator(user):
   res = []