Django Аутентификация Вход в систему из Active directory

Как я могу аутентифицировать и войти в систему пользователя из Active Directory? Вот мой код

Authenticate.py:

from .models import User
from ldap3 import ALL, Server, Connection, NTLM
from ldap3.core.exceptions import LDAPException
from django.contrib.auth.backends import ModelBackend


def validate_user_credentials(username, password):
    server = Server(host='@xxxDomain',
                    use_ssl=False, get_info=ALL)
    try:
        with Connection(
            server, authentication="NTLM", user=f"{''}\\{username}", password=password, raise_exceptions=False,
        ) as connection:
            print(connection.result['description'])
            return True
    except LDAPException as e:
        print(e)
        return False

 
class UserAuth(ModelBackend):
    def authenticate(self,request,username=None,password=None,**kwargs):
        try:
            if (validate_user_credentials(username, password)):
                print("Helloooooooooooooo")
                user = User.objects.get(username=username)
                print(user)
                return user
            return None
        except User.DoesNotExist:
            return None

    def get_user(self, user_id):
        try:
            return User.objects.get(username=user_id)
        except User.DoesNotExist:
            return None

views.py:

class UserLoginView(View):
    form_class = UserLoginForm

    def get(self, request):
        form = self.form_class
        return render(request, 'login/login.html', {'form': form})

    def post(self, request):
        form = self.form_class(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            userexistindb = User.objects.filter(
                username=cd['username'], is_user_local=False).exists()
            username = cd['username']
            password = cd['password']

            try:
                if userexistindb:
                    try:
                        user = authenticate(
                            request, username=username, password=password)
                        if (user is not None):
                            login(request=request, user=user)
                            messages.success(
                                request, 'Loged in success', 'success')
                            return redirect('login:result')
                        else:
                            messages.error(request, 'us', 'warning')
                    except User.DoesNotExist:
                        messages.error(
                            request, 'Invalid User/Password', 'warning')
            except User.DoesNotExist:
                username = None
                messages.error(
                    request, 'Invalid User/Password', 'warning')
        return render(request, 'login/login.html', {'form': form})

  1. Результатом является sessionid Он создан, имя пользователя и пароль правильные и ответ верный
  2. но захваченная информация о пользователе не отображается. Информация отображается в журнале!

введите описание изображения здесь

Что мне делать?

Вернуться на верх