пытается заставить мою аутентификацию Django работать с сервером LDAP, но я не могу войти, мне удалось сделать это с помощью тестового сервера LDAP для forumys с помощью AUTH_LDAP_USER_DN_TEMPLATE, но добавив оба с LDAPSearchUnion (что я и сделаю нужно в моем реальном проекте) показывает только «неверное имя пользователя / пароль» (мое сообщение в случае неудачного входа в систему)
Вот мои настройки.py:
AUTH_LDAP_SERVER_URI = "ldap://ldap.forumsys.com"
AUTH_LDAP_BIND_DN = "cn=read-only-admin,dc=example,dc=com"
AUTH_LDAP_BIND_PASSWORD = "password"
AUTH_LDAP_USER_SEARCH = LDAPSearchUnion(
LDAPSearch("ou=mathematicians,dc=example,dc=com",
ldap.SCOPE_SUBTREE, "(uid=%(user)s)"),
LDAPSearch("ou=scientists,dc=example,dc=com",
ldap.SCOPE_SUBTREE, "(uid=%(user)s)"),
)
AUTH_LDAP_USER_ATTR_MAP = {
'first_name': 'givenName',
'last_name': 'sn',
'email': 'mail',
}
AUTH_LDAP_ALWAYS_UPDATE_USER = True
AUTHENTICATION_BACKENDS = (
'django_auth_ldap.backend.LDAPBackend',
)
Views.py:
def login_page(request):
if request.user.is_authenticated:
return redirect("list")
context = {
'form': LoginForm,
}
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data.get("username")
password = form.cleaned_data.get("password")
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('list')
else:
messages.error(request, 'Wrong username or password')
return redirect("login")
return render(request, 'login.html', context)
Кто-нибудь знает, что я могу делать не так?
EDIT
Мне удалось сделать это с помощью:
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=dc=example,dc=com",
ldap.SCOPE_SUBTREE, "(uid=%(user)s)")
Но идея состоит в том, чтобы добавить OU (например, ученых), чтобы только ученые могли войти в приложение.