使用django ldap将特定用户设置为员工用户

时间:2012-08-30 16:02:56

标签: django ldap django-authentication

我已成功设法让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配置错误的原因吗?

1 个答案:

答案 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