我正在运行Django 1.8.18和django-auth-ldap 1.2.11对Active Directory进行身份验证。
我当前的配置针对AD进行了正确的身份验证,但是,当我启用AUTH_LDAP_FIND_GROUPS_PERMS
时,它似乎无法执行任何操作。我之前尝试AUTH_LDAP_MIRROR_GROUPS
(没有任何问题),并找到了所有用户的群组。唯一的问题是它还会删除用户拥有的任何本地组成员身份。
在任何情况下,在AUTH_LDAP_MIRROR_GROUPS
自动创建组后,我希望AUTH_LDAP_FIND_GROUPS_PERMS
会在下次登录时自动将用户添加到同一组。但是,这没有发生。配置的唯一变化是这两行。 AUTH_LDAP_GROUP_TYPE
设置为NestedActiveDirectoryGroupType()
为什么不将用户添加到具有匹配名称的组中的任何想法?
答案 0 :(得分:1)
事实证明AUTH_LDAP_FIND_GROUPS_PERMS
实际上并没有将用户添加到组中,而是实际上将它们添加到组中,以确保其权限响应就像它们位于与名称匹配的组中一样。
答案 1 :(得分:0)
我怀疑它是你正在使用的AUTH_LDAP_GROUP_TYPE
。我也在使用这个库,让它同步组/成员资格。这是我对库的设置的完全转储:
AUTH_LDAP_START_TLS = True
AUTH_LDAP_SERVER_URI = 'xxxx'
AUTH_LDAP_GLOBAL_OPTIONS = {
ldap.OPT_X_TLS_REQUIRE_CERT: ldap.OPT_X_TLS_NEVER
}
AUTH_LDAP_BIND_DN = 'yyyy'
AUTH_LDAP_BIND_PASSWORD = 'zzzz'
AUTH_LDAP_USER_SEARCH = LDAPSearchUnion(
LDAPSearch(
'OU=OurCorp,DC=foo,DC=bar,DC=com',
ldap.SCOPE_SUBTREE,
filterstr='(uid=%(user)s)'
),
)
AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "givenName",
"last_name": "sn",
"email": "mail",
}
AUTH_LDAP_GROUP_TYPE = ActiveDirectoryGroupType()
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
'OU=Security Groups,OU=Users and Groups,OU=OurCorp,DC=foo,DC=bar,DC=com',
ldap.SCOPE_SUBTREE,
'(objectClass=group)'
)
AUTH_LDAP_MIRROR_GROUPS = True
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
'is_staff': [ # Allow login to the Django admin site
'CN=Our-Staff-Group,OU=Security Groups,OU=Users and Groups,OU=OurCorp,DC=foo,DC=bar,DC=com',
],
'is_superuser': [ # Implicitly grant ALL permissions to members of these groups
'CN=Our-Superuser-Group,OU=Security Groups,OU=Users and Groups,OU=OurCorp,DC=foo,DC=bar,DC=com'
],
}
正如我所提到的,我认为AUTH_LDAP_GROUP_TYPE
可能是您的问题,但这可能取决于您自己的AD设置。