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

Spring Boot连接MS Active Directory出现LDAP错误码32如何解决

错误原因
  • LDAP错误码32对应NO_OBJECT错误,含义是程序尝试访问的LDAP对象/路径不存在。本次报错中remaining name '/'说明程序从LDAP根路径开始搜索时无法定位到目标用户路径,核心由配置错误导致:
    1. userDnPatterns参数用法错误:该参数用于定义用户DN的匹配模板,必须包含用户名占位符{0},你当前配置的是固定DN值cn=users,dc=in,dc=com,不符合参数设计要求。如果要指定用户搜索的根路径,应该使用userSearchBase参数。
    2. userSearchFilter参数配置错误:当前配置的(objectClass=person)只能匹配所有person类型的对象,没有关联登录用户名的占位符{0},无法定位到单个登录用户。微软Active Directory默认使用sAMAccountName存储用户登录名,你注释掉的过滤规则才是适配AD的正确写法。
  • 附加排查点:可通过ADSI编辑工具验证cn=users,dc=in,dc=com是否为域内存储用户的真实有效DN,同时确认managerDn配置的管理员账号路径、密码正确。
修复方案

配置示例(适配AD常规场景)

auth
    .ldapAuthentication()
    // 指定用户搜索的根DN
    .userSearchBase("cn=users,dc=in,dc=com")
    // 用sAMAccountName匹配输入的登录用户名,{0}会自动替换为用户输入的账号
    .userSearchFilter("(sAMAccountName={0})")
    .contextSource()
    .url("ldap://ldap1:389")
    .managerDn("cn=Admin,ou=SERVICEACCT,dc=in,dc=com")
    .managerPassword("1234");

如果你的所有AD用户都放在同一个固定OU下,也可以直接用userDnPatterns写法,不需要额外配置userSearchBase,示例如下:

// 假设所有用户都存放在ou=people,dc=in,dc=com下
auth
    .ldapAuthentication()
    .userDnPatterns("cn={0},ou=people,dc=in,dc=com")
    .userSearchFilter("(objectClass=person)")
    .contextSource()
    .url("ldap://ldap1:389")
    .managerDn("cn=Admin,ou=SERVICEACCT,dc=in,dc=com")
    .managerPassword("1234");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:45:05