Я схожу с ума из-за аутентификации 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
?
Есть идеи, как ее решить?