Я хочу интегрировать LDAP аутентификацию в Django, но не хватает некоторой конфигурации, я думаю

Я хочу интегрировать LDAP аутентификацию в Django, но даже аутентификация не происходит, т.е. даже после предоставления правильных учетных данных LDAP данные пользователя в панели администратора Django не сохраняются в модели пользователя Django.

Вот мой файл setttings.py в Django

AUTH_LDAP_SERVER_URI = 'ldaps://xxxxxx:636'
AUTH_LDAP_BIND_DN = 'CN=xxxxx,OU=Service,OU=Accounts,OU=SF_SAP,DC=sf,DC=priv'
AUTH_LDAP_BIND_PASSWORD = 'xxxxxxxx'
AUTH_LDAP_USER_SEARCH = LDAPSearch('OU=User,OU=Accounts,OU=SF_SAP, DC=sf,DC=priv',ldap.SCOPE_SUBTREE, '(CN=%(user)s)')

AUTH_LDAP_USER_ATTR_MAP = {
        "first_name": "givenName",
        "last_name": "sn",
        "email": "mail",
        "username": "uid",
        "password": "userPassword",
}
AUTH_LDAP_PROFILE_ATTR_MAP = {
        "home_directory": "homeDirectory"
}
AUTH_LDAP_ALWAYS_UPDATE_USER = True
AUTH_LDAP_CACHE_TIMEOUT = 3600

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

Может кто-нибудь указать, что я упустил?

Похоже, что фильтр поиска неверен: согласно карте атрибутов пользователя, username соответствует uid, если это правильно, то фильтр поиска должен быть '(uid=%(user)s)' :

AUTH_LDAP_USER_SEARCH = LDAPSearch(
  'OU=User,OU=Accounts,OU=SF_SAP, DC=sf,DC=priv', ldap.SCOPE_SUBTREE, '(uid=%(user)s)'
)

Но может быть и наоборот (трудно сказать без примера пользователя dn): если аутентификация работает, но предоставление пользователя не работает, тогда исправьте отображение: "username": "cn".

Вы также можете дважды проверить, что все пользователи, которых вы пытаетесь аутентифицировать, принадлежат к указанному поддереву 'OU=User,OU=Accounts,OU=SF_SAP, DC=sf,DC=priv'.

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