我正在尝试将django-auth-ldap
配置为与继承的非常旧的LDAP模式一起使用。我在查询LDAP组时遇到2个问题。首先,我的LDAP模式使用memberUid
属性而不是member
属性。其次,我的LDAP模式有一个大写的OU
,似乎在跳动django-auth-ldap
。
我的django-auth-ldap
设置非常简单,通常直接从官方文档中获取。以下是几行重要内容。注意我的OU
中的大写字母'G'。
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
这是我的syslog中的一个特别有说服力的行。
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
属性,但我的组没有任何这样的属性,这是有意义的。这里的第二个问题是由于某种原因,我的OU
中的'G'在查询中没有大写。
是否有任何方法可以使django-auth-ldap
查找memberUid
而不是member
,并且有什么方法可以强制其遵循配置文件中指定的组的情况?