Code not working on IIS server but working on localhost - Exception Type: KeyError at / Exception Value: '_auth_user_backend'
I am struggling with the below error :
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'xx.middleware.LDAPAuthMiddleware',
'xx.middleware.UserLogMiddleware',
'django.contrib.auth.middleware.RemoteUserMiddleware']
Traceback (most recent call last):
File "C:\xx\venv\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "C:\xx\venv\Lib\site-packages\django\utils\deprecation.py", line 133, in __call__
response = self.process_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\xx\venv\Lib\site-packages\django\contrib\auth\middleware.py", line 71, in process_request
if request.user.get_username() == self.clean_username(username, request):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\xx\venv\Lib\site-packages\django\contrib\auth\middleware.py", line 92, in clean_username
backend_str = request.session[auth.BACKEND_SESSION_KEY]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\xx\venv\Lib\site-packages\django\contrib\sessions\backends\base.py", line 53, in __getitem__
return self._session[key]
^^^^^^^^^^^^^^^^^^
Exception Type: KeyError at /
Exception Value: '_auth_user_backend'
I don't really understand when this error is triggered and why. Working on localhost does not trigger the error but when trying to use the site on IIS it does trigger this error, so this is quite hard to debug.
Below is my middleware :
def get_client_user(self,request):
username = request.META.get('REMOTE_USER')
if username is None:
username = request.META.get('HTTP_REMOTE_USER')
if username is None:
username = 'Anonymous'
return username
def __call__(self, request):
auth = LDAPBackend()
My_User_Test = self.get_client_user(request)
My_User_ip = self.get_client_ip(request)
username = My_User_Test.replace("MC-DOMAIN\\","")
if not request.user.is_authenticated:
print(username)
user = auth.populate_user(username)
request.user = user
else:
user = request.user
context = {'metadata_user': username,
'request_user': My_User_Test,
'request_ip': My_User_ip,}
if user is None:
print("User not authenticated: ", username)
return render(request, 'Not_Authorized.html',context)
else:
print("User Authenticated: ", user)
if user is not None and 'memberOf' in user.ldap_user.attrs:
groups = user.ldap_user.attrs['memberOf']
is_member_of_GRP_ACCESS = any('CN=GRP_ACCESS,' in group for group in groups)
if not is_member_of_GRP_ACCESS :
return render(request, 'Not_Authorized.html',context)
response = self.get_response(request)
return response
Below is my IIS Configuration :
Does anyone have an explanation, a way to debug or a way to solve this error ?
