我已成功设法让django-ldap与我的活动目录服务器一起工作,但是现在我想让某些用户成为django的staff
组的一部分。
我看不出如何指定特定的用户帐户(这可能吗?),所以我决定只允许特定群组的任何人:
# Set up the basic group parameters.
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("OU=mygroup,OU=users,DC=myserver",
ldap.SCOPE_SUBTREE, "(objectClass=memberOf)"
)
AUTH_LDAP_GROUP_TYPE = ActiveDirectoryGroupType()
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
"is_active": "OU=mygroup,OU=users,DC=myserver",
"is_staff": "OU=mygroup,OU=users,DC=myserver",
}
# This is the default, but I like to be explicit.
AUTH_LDAP_ALWAYS_UPDATE_USER = True
# Use LDAP group membership to calculate group permissions.
AUTH_LDAP_FIND_GROUP_PERMS = True
# Cache group memberships for an hour to minimize LDAP traffic
AUTH_LDAP_CACHE_GROUPS = True
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600
不幸的是这个配置不起作用,这是日志条目:
CN=my_user,OU=mygroup,OU=users,DC=myserver is not a member of OU=mygroup,OU=users,DC=myserver
我真的不知道问题是什么,因为小组成员船是相同的。这是AUTH_LDAP_GROUP_SEARCH
配置错误的原因吗?
答案 0 :(得分:1)
组成员资格,因为django-auth-ldap使用该术语,与目录树结构没有任何关系。 CN=my_user,OU=mygroup,OU=users,DC=myserver
在这个意义上不是OU=mygroup,OU=users,DC=myserver
的成员,它恰好是一个子DN。如果要根据任意属性(包括DN)分配Django用户属性,可以将信号处理程序附加到django_auth_ldap.backend.populate_user。