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

如何在Python ldap3中抑制AD搜索结果的referrals

解决ldap3连接AD时仍返回referrals的问题

我之前也碰到过一模一样的情况,明明设了auto_referrals=False还是收到一堆searchResRef结果,折腾了好一阵才找到几个靠谱的解决方向,给你参考:

1. 确保连接和搜索操作都禁用referrals

有时候只在初始化Connection时设置auto_referrals=False还不够,ldap3的search()方法本身也有这个参数,得两边都明确指定,避免默认值覆盖:

from ldap3 import Server, Connection, ALL

# 连接时禁用referrals
server = Server('你的AD服务器地址', get_info=ALL)
conn = Connection(server, '你的域账号@domain.com', '密码', auto_referrals=False)
conn.bind()

# 搜索时再次明确禁用referrals
conn.search(
    search_base='DC=domain,DC=com',
    search_filter='(objectClass=computer)',
    attributes=['cn', 'dnsHostName'],
    auto_referrals=False  # 这个不能漏!
)

2. 配合设置referral_chasing为NONE

ldap3里还有个referral_chasing参数,它的优先级可能比auto_referrals更高。试试在连接时同时设置这两个参数:

conn = Connection(
    server,
    '你的域账号@domain.com',
    '密码',
    auto_referrals=False,
    referral_chasing='NONE'  # 强制关闭referral追踪
)

3. 缩小搜索范围,精准指定search_base

如果你的AD存在子域或者信任域,控制器可能会自动返回跨域的referrals。试试把搜索基直接定位到计算机所在的OU,而不是整个域,这样能减少AD返回referrals的触发条件:

# 比如计算机都在OU=Workstations,DC=domain,DC=com下
conn.search(
    search_base='OU=Workstations,DC=domain,DC=com',
    search_filter='(objectClass=computer)',
    attributes=['cn'],
    auto_referrals=False
)

4. 考虑Python版本的影响

你用的Python 2.7.16已经停止维护很久了,ldap3对Python 2.x的后续支持可能存在一些遗留问题。如果条件允许,建议升级到Python 3.x版本再测试,我之前升级后类似的referral问题直接就消失了。

内容的提问来源于stack exchange,提问作者DYoung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:05:37