LDAP认证失败求助:Spring Security连接关闭故障排查
LDAP认证故障排查指导
一、优先排查连接层问题
日志明确提示LDAP connection has been closed,结合配置先做基础验证:
- 协议与端口不匹配:配置中用
ldap://但端口是636,636是LDAPS(SSL加密)的标准端口,普通LDAP协议无法建立连接,会被服务器主动关闭。需将URL修改为ldaps://10.16.1.30:636/cn=IDT_Benutzer,ou=Gruppen,ou=IDT,dc=cit,dc=global。 - 手动验证连接可用性:用LDAP客户端工具(如
ldapsearch、ldp.exe)测试管理员账号的连接:
若连接失败,先排查网络防火墙、LDAP服务器SSL配置(如证书信任问题),这是认证正常运行的基础前提。ldapsearch -H ldaps://10.16.1.30:636 -D "cn=ldap-shiny,dc=cit,dc=global" -w "管理员密码" -b "dc=cit,dc=global" "(objectClass=user)"
二、修正认证逻辑配置冲突
日志显示系统尝试用uid=wilczewski@cit.global构建用户DN,但你配置了sAMAccountName={0}的搜索过滤器,存在配置冲突:
user-dn-pattern与user-search-filter不可同时启用:Spring Security LDAP中二者互斥。从sAMAccountName判断你的LDAP大概率是Active Directory,应删除user-dn-pattern: uid={0},保留user-search-filter,同时补充user-search-base指定用户搜索根路径,示例:
否则系统会优先用ldap: # 其他配置不变 user-search-base: ou=IDT,dc=cit,dc=global user-search-filter: (sAMAccountName={0}) # 删除user-dn-pattern配置项user-dn-pattern拼接DN,而非执行用户搜索,导致用户DN错误,绑定失败。
三、修正组搜索配置
当前group-search-base: cn=user配置无效,group-search-base需指定组所在的容器DN,若你的组存放在ou=Gruppen,ou=IDT,dc=cit,dc=global,则修改为:
ldap: # 其他配置不变 group-search-base: ou=Gruppen,ou=IDT,dc=cit,dc=global group-search-filter: (member={0})
错误的组搜索路径可能引发认证过程中的额外连接异常,需同步修正。
四、验证用户DN正确性
连接正常后,手动搜索目标用户的完整DN,确保系统能正确定位用户:
ldapsearch -H ldaps://10.16.1.30:636 -D "cn=ldap-shiny,dc=cit,dc=global" -w "管理员密码" -b "cn=IDT_Benutzer,ou=Gruppen,ou=IDT,dc=cit,dc=global" "(sAMAccountName=wilczewski@cit.global)" dn
若搜索结果中的DN与日志中尝试绑定的DN不一致,说明用户定位逻辑有误,需调整user-search-base或user-search-filter。
内容的提问来源于stack exchange,提问作者Friedbert
相关产品推荐
相关产品推荐

