Django LDAP按组搜索限制失效及CN搜索失败问题求助
Django LDAP认证配置问题解决方案
问题2:修改用户搜索基准为组DN后无法找到用户
原因:用户对象存储在OU=E,DC=i,DC=e,DC=int下,组CN=allow,OU=Groups,DC=i,DC=e,DC=int是独立容器,用户不在组的子树范围内,因此搜索不到用户。
解决方法:
- 保持用户搜索基准为用户所在OU,不要改为组DN:
AUTH_LDAP_USER_SEARCH = LDAPSearch("OU=E,DC=i,DC=e,DC=int", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)") - 组内用户限制通过
AUTH_LDAP_REQUIRE_GROUP配置实现,无需修改用户搜索路径。
问题3:用户属于目标组但组权限验证失败
原因:配置的组类型与Active Directory(AD)组类型不匹配,且组搜索参数有误。
解决方法:
- 修正组类型:AD使用
ActiveDirectoryGroupType而非GroupOfUniqueNamesType,导入并替换:from django_auth_ldap.config import ActiveDirectoryGroupType AUTH_LDAP_GROUP_TYPE = ActiveDirectoryGroupType(name_attr="cn") - 调整组搜索配置:
- 组搜索基准指向Groups的OU(而非单个组DN),确保能遍历组对象;
- 过滤条件改为AD组对应的
objectClass=group:AUTH_LDAP_GROUP_SEARCH = LDAPSearch("OU=Groups,DC=i,DC=e,DC=int", ldap.SCOPE_SUBTREE, "(objectClass=group)")
- 保留组验证配置:
AUTH_LDAP_REQUIRE_GROUP = "CN=allow,OU=Groups,DC=i,DC=e,DC=int" - (可选)若用户通过嵌套组加入目标组,开启递归组检查:
AUTH_LDAP_MEMBER_OF_RECURSIVE = True
完整有效配置示例
import ldap from django_auth_ldap.config import LDAPSearch, ActiveDirectoryGroupType # 基础用户搜索配置 AUTH_LDAP_USER_SEARCH = LDAPSearch("OU=E,DC=i,DC=e,DC=int", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)") # 组权限限制配置 AUTH_LDAP_REQUIRE_GROUP = "CN=allow,OU=Groups,DC=i,DC=e,DC=int" AUTH_LDAP_GROUP_TYPE = ActiveDirectoryGroupType(name_attr="cn") AUTH_LDAP_GROUP_SEARCH = LDAPSearch("OU=Groups,DC=i,DC=e,DC=int", ldap.SCOPE_SUBTREE, "(objectClass=group)") # 嵌套组场景启用以下配置 # AUTH_LDAP_MEMBER_OF_RECURSIVE = True
内容的提问来源于stack exchange,提问作者Norbert Yuhas
相关产品推荐
相关产品推荐

