Аутентификация в django с помощью ldap3

Я тестирую библиотеку django_python3_ldap и использую тот же ldap-сервер, который я нашел в учебнике (https://ldap3.readthedocs.io/en/latest/tutorial_intro.html), но есть кое-что, что я не понял правильно, чтобы установить соединение. Кто-нибудь знает, что не так с этими настройками?

Вот ошибка: "LDAP bind failed: LDAPInvalidCredentialsResult - 49 - invalidCredentials - None - None - bindResponse - None"

Вот мой код в settings.py:

AUTHENTICATION_BACKENDS = [
    "django.contrib.auth.backends.ModelBackend",
    "django_python3_ldap.auth.LDAPBackend",
]

# The URL of the LDAP server.
LDAP_AUTH_URL = "ldap://ipa.demo1.freeipa.org" 

# Initiate TLS on connection.
LDAP_AUTH_USE_TLS = False

# The LDAP search base for looking up users.
LDAP_AUTH_SEARCH_BASE = "uid=admin,cn=users,cn=accounts,dc=demo1,dc=freeipa,dc=org" #"dc=demo1,dc=freeipa,dc=org" 

# The LDAP class that represents a user.
LDAP_AUTH_OBJECT_CLASS = "*" 

# User model fields mapped to the LDAP
# attributes that represent them.
LDAP_AUTH_USER_FIELDS = {
    "username": "sAMAccountName", #"username",
    "first_name": "givenName",
    "last_name": "sn",
    "email": "mail",
}

# A tuple of django model fields used to uniquely identify a user.
LDAP_AUTH_USER_LOOKUP_FIELDS = ("username",)  

# Path to a callable that takes a dict of {model_field_name: value},
# returning a dict of clean model data.
# Use this to customize how data loaded from LDAP is saved to the User model.
LDAP_AUTH_CLEAN_USER_DATA = "django_python3_ldap.utils.clean_user_data"

# Path to a callable that takes a user model, a dict of {ldap_field_name: [value]}
# a LDAP connection object (to allow further lookups), and saves any additional
# user relationships based on the LDAP data.
# Use this to customize how data loaded from LDAP is saved to User model relations.
# For customizing non-related User model fields, use LDAP_AUTH_CLEAN_USER_DATA.
LDAP_AUTH_SYNC_USER_RELATIONS = "django_python3_ldap.utils.sync_user_relations"

# Path to a callable that takes a dict of {ldap_field_name: value},
# returning a list of [ldap_search_filter]. The search filters will then be AND'd
# together when creating the final search filter.
LDAP_AUTH_FORMAT_SEARCH_FILTERS = "django_python3_ldap.utils.format_search_filters"

# Path to a callable that takes a dict of {model_field_name: value}, and returns
# a string of the username to bind to the LDAP server.
# Use this to support different types of LDAP server.
LDAP_AUTH_FORMAT_USERNAME = "django_python3_ldap.utils.format_username_openldap"

# Sets the login domain for Active Directory users.
LDAP_AUTH_ACTIVE_DIRECTORY_DOMAIN = ""

# The LDAP username and password of a user for querying the LDAP database for user
# details. If None, then the authenticated user will be used for querying, and
# the `ldap_sync_users` command will perform an anonymous query.
LDAP_AUTH_CONNECTION_USERNAME = "admin"
LDAP_AUTH_CONNECTION_PASSWORD = "Secret123"

Согласно документации freeipa docs вы должны использовать логин admin / Secret123 или логин другого сотрудника для подключения через ldap:

Домен FreeIPA настроен со следующими пользователями (пароль Secret123 для всех них):

  • admin: Учетная запись главного администратора FreeIPA, имеет все привилегии
  • .
  • helpdesk: Обычный пользователь с ролью helpdesk, позволяющей ему изменять других пользователей или изменять их членство в группах
  • .
  • сотрудник: Обычный пользователь без особых привилегий
  • .
  • manager: Обычный пользователь, установленный как manager пользователя employee
  • .
Вернуться на верх