[Bug] LDAP对接连接超时时间配置不生效
Author: wan92henCreated Sep 24, 2026Updated Sep 24, 2026
Labels🐛 Bug🔔 Pending processing
产品版本
v4.10.19
版本类型
- 社区版
- 企业版
- 企业试用版
安装方式
- 在线安装 (一键命令安装)
- 离线包安装
- All-in-One
- 1Panel
- Kubernetes
- 源码安装
环境信息
标准环境
缺陷描述
LDAP 认证配置中的连接超时时间不生效。AD/LDAP 接入 Rublon LDAP 代理后,用户登录需要在邮箱里批准 MFA 请求。JumpServer 大约 10 秒后就会中断认证、登录失败,用户来不及批准。
在 系统设置 → 认证 → LDAP(及 LDAP HA)→ Other → Connect timeout (s) 中把值从默认的 10 改成 60,保存后问题依旧,重启服务也无效。
复现步骤
- 配置 LDAP(或 LDAP HA)指向一个 bind 响应会延迟 > 10 秒的 LDAP 服务(例如挂人工审批的 MFA 代理)。
- 将“Connect timeout (s)”设置为 60 并保存。
- 用 LDAP 用户登录。
- 观察:登录仍在约 10 秒后失败(默认值),说明设置未生效。
期望结果
Connect timeout (s) 应控制 LDAP 连接/绑定的超时时间;设置为 60 后,认证应能等待 60 秒。
补充信息
真正传给 LDAP 客户端库的超时来自 AUTH_LDAP_CONNECTION_OPTIONS,它在 apps/jumpserver/settings/auth.py 中于模块导入时一次性构建为普通 dict:
AUTH_LDAP_CONNECTION_OPTIONS = {
ldap.OPT_TIMEOUT: CONFIG.AUTH_LDAP_CONNECT_TIMEOUT, # 默认 10
ldap.OPT_NETWORK_TIMEOUT: CONFIG.AUTH_LDAP_CONNECT_TIMEOUT,
}CONFIG来自jumpserver/conf.py(config.py/config.yml/ 环境变量 / 默认值AUTH_LDAP_CONNECT_TIMEOUT: 10,见apps/jumpserver/conf.py),与数据库中的 Setting 无关。- 页面保存走的是
Setting.refresh_setting(),只执行setattr(django.conf.settings, 'AUTH_LDAP_CONNECT_TIMEOUT', 60)(apps/settings/models.py),而settings.AUTH_LDAP_CONNECTION_OPTIONS这个 dict 不会被重算,settings.AUTH_LDAP_CONNECT_TIMEOUT也没有任何代码读取。 - 结果是
ldap.OPT_TIMEOUT/ldap.OPT_NETWORK_TIMEOUT恒为 10,django-auth-ldap的_LDAPUser._bind_as()使用同步simple_bind_s(),10 秒后抛ldap.TIMEOUT,被apps/authentication/backends/ldap.py的except Exception记录日志后返回None,登录失败。 - 另外,
config_example.yml也没有暴露该配置项(仅有AUTH_LDAP_SEARCH_PAGED_SIZE、AUTH_LDAP_OPTIONS_OPT_REFERRALS),即该参数目前只在 UI 上出现、实际不起作用。
AUTH_LDAP_HA_CONNECT_TIMEOUT / AUTH_LDAP_HA_CONNECTION_OPTIONS 存在完全相同的问题。
尝试过的解决方案
No response
Source: jumpserver/jumpserver