Django ldap аутентификация, проблема с многозначными группами DN - PullRequest
1 голос
/ 05 марта 2019

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

Запросить более подробную информацию о структуре AD,Я обнаружил, что группа использует многозначный DN для хранения пользователей с именем member

Изучая документацию, я обнаружил множество AUTH_LDAP_GROUP_TYPE, которые управляют этим атрибутом, например:

  • MemberDNGroupType
  • NestedMemberDNGroupType и их подклассы, но никто из них не может найти пользователя в одной из двух групп

Снимок экрана атрибута group member: список участников

Это конфигурация Django, связанная с LDAP

AUTH_LDAP_CONNECTION_OPTIONS ={
    ldap.OPT_PROTOCOL_VERSION:ldap.VERSION3,
    ldap.OPT_REFERRALS:0
}
AUTH_LDAP_GROUP_TYPE = NestedActiveDirectoryGroupType()

# Baseline configuration.
AUTH_LDAP_SERVER_URI = 'ldap://ldap.xxxx.com'

AUTH_LDAP_BIND_DN = 'auth_user@xxxx.com'
AUTH_LDAP_BIND_PASSWORD = 'qwerty'

AUTH_LDAP_REQUIRE_GROUP = (
        LDAPGroupQuery('cn=group_1,ou=group_container,dc=xxxx,dc=com') |
        LDAPGroupQuery('cn=group_2,ou=group_container,dc=xxxx,dc=com'))

AUTH_LDAP_USER_SEARCH = LDAPSearch(
    'ou=user_container,dc=xxxx,dc=com',
    ldap.SCOPE_SUBTREE,
    '(UserPrincipalName=%(user)s)',
 )

AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
    'ou=group_container,dc=xxxx,dc=com',
    ldap.SCOPE_SUBTREE,
    '(objectClass=nestedActiveDirectoryGroup)',
 )

AUTH_LDAP_ALWAYS_UPDATE_USER = True

AUTH_LDAP_CACHE_TIMEOUT = 3600

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

DN, OU, DC являются правильными как для пользователей, так и для групп.

Может ли быть проблема, связанная с типом атрибута member?

Есть идеи, как ее решить?

1 Ответ

0 голосов
/ 06 марта 2019

Я нашел ошибку. Все было вызвано опечаткой для атрибута OU в AUTH_LDAP_REQUIRE_GROUP. Исправил это и изменил AUTH_LDAP_GROUP_TYPE на ActiveDirectoryGroupType все начинает работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...