0

我已经成功地让 django-ldap 与我的活动目录服务器一起工作,但是现在我想让某些用户成为 djangostaff组的一部分。

我看不到如何指定特定的用户帐户(这可能吗?),所以我决定只允许特定组的任何人:

# 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配置不正确?

4

1 回答 1

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

于 2012-08-30T20:41:10.813 回答