Я пытаюсь настроить django-auth-ldap
для работы с очень старой схемой LDAP, которую я унаследовал.Я сталкиваюсь с 2 проблемами с запросами для групп LDAP.Во-первых, моя схема LDAP использует атрибут memberUid
вместо атрибута member
.Во-вторых, моя схема LDAP имеет прописную букву OU
, которая, кажется, срабатывает django-auth-ldap
.
Моя django-auth-ldap
установка довольно проста, в основном взяты из официальной документации.Вот несколько важных строк.Обратите внимание на заглавную букву «G» в моем OU
.
AUTH_LDAP_GROUP_SEARCH = LDAPSearch('ou=Group,dc=school,dc=edu',
ldap.SCOPE_SUBTREE,'(objectClass=groupOfNames)',)
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType(name_attr='cn')
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
"is_staff":"cn=org-staff,ou=Group,dc=school,dc=edu"
}
Вот фрагмент моего дампа ldap.
cn: cn=org-staff,ou=Group,dc=school,dc=edu
objectClass: posixGroup
objectClass: top
cn: org-staff
gidNumber: 999
memberUid: someuser
А вот особенно интересная строка из моего системного журнала.
Dec 27 22:56:47 server slapd[45950]: conn=1467 op=4 CMP dn="cn=org-staff,ou=group,dc=school,dc=edu" attr="member"
Dec 27 22:56:47 server slapd[45950]: conn=1467 op=4 RESULT tag=111 err=16 text=
Ошибка LDAP 16 равна LDAP_NO_SUCH_ATTRIBUTE
, что имеет смысл в этом случае, учитывая, что запрос ищет атрибут member
, но моя группа не имеет такого атрибута.Вторая проблема заключается в том, что по какой-то причине буква «G» в моем OU
не прописна в запросе.
Есть ли способ заставить django-auth-ldap
искать memberUid
вместо member
, и есть ли способ заставить его следовать примеру групп, указанных в файле конфигурации?