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 :

enter image description here

Does anyone have an explanation, a way to debug or a way to solve this error ?

Back to Top