LDAP в Django по умолчанию администратор - PullRequest
4 голосов
/ 04 января 2012

ОБНОВЛЕНО

Каким образом Django может по умолчанию выполнять аутентификацию администратора на сервере LDAP вместо базы данных по умолчанию?Я нашел пакет Django Auth LDAP , но ничего не настроил для его использования при входе администратора.Я попытался поместить строки ниже в settings.py помимо конфигурации LDAP:

AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
)

Но это не работает.Если я удалю последнюю строку, она не аутентифицируется в LDAP и покажет мне ошибку аутентификации по умолчанию, поскольку ModelBackend является запасным вариантом.Я попытался скопировать и изменить конфиги, перечисленные в документации , и получаю эту ошибку на консоли:

Caught LDAPError while authenticating karlisson: INVALID_DN_SYNTAX({'info': 'invalid DN', 'desc': 'Invalid DN syntax'},)

Мои settings.py:

AUTH_LDAP_SERVER_URI = "ldap://192.168.0.2"

AUTH_LDAP_BIND_DN = "example_nt"
AUTH_LDAP_BIND_PASSWORD = "example"
AUTH_LDAP_USER_SEARCH = LDAPSearch("cn=admin,dc=example_nt,dc=com,dc=br",
ldap.SCOPE_SUBTREE, "(uid=%(user)s)")

Понятия не имею, где находится синтаксическая ошибка, начинающий LDAP.

Ответы [ 2 ]

11 голосов
/ 04 января 2012

Вход администратора должен работать так же, как и обычный вход в систему.Простого добавления бэкэнда недостаточно, вам нужно его настроить.Документы говорят много на самом деле:

Вы, вероятно, должны установить это:

AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    "is_active": "cn=active,ou=groups,dc=example,dc=com",
    "is_staff": "cn=staff,ou=groups,dc=example,dc=com",
    "is_superuser": "cn=superuser,ou=groups,dc=example,dc=com"
}

Эти флаги IIRC используются администратором, по крайней мере is_superuser.

Нонаиболее важным является этот материал в settings.py:

AUTH_LDAP_SERVER_URI = "ldap://ldap.example.com"
import ldap
from django_auth_ldap.config import LDAPSearch

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=example,dc=com",
    ldap.SCOPE_SUBTREE, "(uid=%(user)s)")

Пожалуйста, попробуйте настроить все это для подключения к вашему ldap, и если у вас все еще возникают проблемы, мы можем попробовать отладить его оттуда.

Также попробуйте получить отладочную информацию , чтобы у вас была информация, если запросы к вашему ldap отправляются (возможно, вы также можете проверить журналы, сделанные вашим ldap, чтобы увидеть, получает ли он запросы от вашего приложения).1017 *

1 голос
/ 02 октября 2013

bindDN должен быть отличительным именем. example_nt не является выдающимся именем.

...