You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)组类型不匹配,且组搜索参数有误。

解决方法:

  1. 修正组类型:AD使用ActiveDirectoryGroupType而非GroupOfUniqueNamesType,导入并替换:
    from django_auth_ldap.config import ActiveDirectoryGroupType
    AUTH_LDAP_GROUP_TYPE = ActiveDirectoryGroupType(name_attr="cn")
    
  2. 调整组搜索配置:
    • 组搜索基准指向Groups的OU(而非单个组DN),确保能遍历组对象;
    • 过滤条件改为AD组对应的objectClass=group:
      AUTH_LDAP_GROUP_SEARCH = LDAPSearch("OU=Groups,DC=i,DC=e,DC=int", ldap.SCOPE_SUBTREE, "(objectClass=group)")
      
  3. 保留组验证配置:
    AUTH_LDAP_REQUIRE_GROUP = "CN=allow,OU=Groups,DC=i,DC=e,DC=int"
    
  4. (可选)若用户通过嵌套组加入目标组,开启递归组检查:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:35:07