РЕДАКТИРОВАТЬ 2:
Кажется, что команда migrate импортирует данные, НО пароль установлен на «непригодный», так как он вызывает этот метод вбиблиотека:
# If the user was created, set them an unusable password.
if created:
user.set_unusable_password() # Will call: self.password = make_password(None)
user.save()
Если у кого есть решение? Удалось ли вам использовать django-python3-ldap с другой версией?
EDIT1:
Кому-то удается использовать django-python3-ldap успешно и может показать мне его настройки. Возможно, я забыл конфигурацию в своих настройках ...
Спасибо!
Я использую django-python3-ldap v0.11.2 для аутентификации LDAP в Django.
Мне удалось подключиться к моему тестовому серверу ldap, который я создал с некоторыми фиктивными пользователями. Миграция с помощью этой команды: python manage.py ldap_sync_users
работает нормально и обновляет мою базу данных.
Однако, когда я пытаюсь соединиться с одним из пользователей, я получаю это сообщение об ошибке: LDAP connect failed: LDAPInvalidCredentialsResult - 49 - invalidCredentials - None - INVALID_CREDENTIALS: Bind failed: Invalid authentication - bindResponse - None
.
Я подозреваю, что это связано с тем, что сохраненный пароль неправильно зашифрован ... Это потому, что следующий тест работает нормально:
- Подключение к существующей учетной записи администратора
- Изменениепароль для вновь импортированного пользователя jdoe до abc
- Выйти
- Соединение с использованием пользователя: jdoe и пароль abc теперь отлично работает!
Кто-нибудь сталкивался с такой проблемой раньше? Или знает, как изменить шифрование пароля, используемое командой migrate? Или, может быть, я пропустил важную конфигурацию LDAP ...
Настройки Python LDAP:
# LDAP Connection Settings
LDAP_AUTH_URL = "ldap://localhost:10389"
LDAP_AUTH_USE_TLS = None
LDAP_AUTH_SEARCH_BASE = "DC=example,DC=com"
LDAP_AUTH_USER_FIELDS = {
"username": "uid",
"first_name": "givenName",
"last_name": "sn",
"email": "mail",
"password": "userPassword"
}
LDAP_AUTH_OBJECT_CLASS = "organizationalPerson"
LDAP_AUTH_USER_LOOKUP_FIELDS = ("username",)
LDAP_AUTH_CLEAN_USER_DATA = "django_python3_ldap.utils.clean_user_data"
LDAP_AUTH_SYNC_USER_RELATIONS = "django_python3_ldap.utils.sync_user_relations"
LDAP_AUTH_FORMAT_SEARCH_FILTERS = "django_python3_ldap.utils.format_search_filters"
LDAP_AUTH_FORMAT_USERNAME = "django_python3_ldap.utils.format_username_active_directory"
LDAP_AUTH_CONNECTION_USERNAME = 'uid=admin,ou=system'
LDAP_AUTH_CONNECTION_PASSWORD = 'secret'
Конфигурация тестового пользователя LDAP:
dn: cn=Jane Doe,ou=Users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: Jane Doe
sn: Doe
ou: site_admin
description: 19650324000000Z
employeeNumber: 12
givenName: Jane
mail: jane@example.com
telephoneNumber: 169-637-3314
telephoneNumber: 907-547-9114
uid: jdoe
userPassword:: abc
Выдержка из моего теста db:
Имя пользователя |Пароль
jdoe ........... |! ipxhdylGKTwILF ...
OkUser ...... | pbkdf2_sha256 $ 150000 $ PHBKev ...
Спасибо за помощь