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

SVN基于LDAP认证失败(密码不匹配)问题求助

SVN LDAP(AD)认证密码不匹配失败的排查与解决

以下是针对该问题的具体排查步骤和解决方案:

1. 验证LDAP用户基础认证有效性

  • 用ldapsearch直接测试目标用户的AD认证,确认AD端本身的认证逻辑是否正常:
    ldapsearch -x -H ldap://192.0.0.1:389 -D "CN=user1,CN=Users,DC=companyname,DC=com" -w "user1的实际密码" -b "DC=companyname,DC=com" "(sAMAccountName=user1)"
    
    如果该命令失败,说明用户密码错误、账号锁定/过期,或者用户DN格式有误,先解决AD端问题;如果成功,说明AD认证正常,问题出在HTTPD配置环节。
  • 检查绑定用户(CN=svn ldap)的状态:确认该账号未过期、未锁定,且拥有读取AD用户属性的权限。

2. 查看HTTPD错误日志定位具体原因

查看HTTPD错误日志(通常路径为/var/log/httpd/error_log),日志会明确标注LDAP认证失败的细节:

  • Invalid credentials:用户密码错误,或绑定用户权限不足无法读取认证属性
  • No such object:LDAP搜索路径或用户DN配置有误
  • Referral:AD返回跳转链接,需关闭referrals配置

3. 优化LDAP认证配置参数

在10-subversion.conf的<Location /svn>块中补充或调整以下参数:

# 确保HTTPD将AD返回的sAMAccountName作为用户名
AuthLDAPRemoteUserAttribute sAMAccountName
# 关闭LDAP referrals(AD环境下常需此配置)
AuthLDAPReferrals off
# 仅使用LDAP作为认证源,避免其他源干扰
AuthLDAPBindAuthoritative off

4. 排除权限配置文件干扰

  • 暂时注释掉AuthzSVNAccessFile /etc/httpd/conf/access.conf,仅保留Require valid-user,测试是否能正常认证。若此时认证成功,说明问题出在权限文件:
    • 确认access.conf中的仓库名repo与/mnt/repositories下的实际文件夹名完全一致
    • 确认配置中的用户名user1与AD中用户的sAMAccountName完全匹配

5. 验证HTTPD模块加载状态

执行httpd -M | grep ldap,确保authnz_ldap_module和ldap_module均显示为loaded状态,若未加载则检查模块路径配置是否正确。

6. 测试HTTP基础认证流程

用curl直接测试SVN仓库的认证逻辑:

curl -u user1:实际密码 http://你的服务器地址/svn/repo

结合HTTPD错误日志,观察返回的错误信息,进一步缩小问题范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:33:19