LDAP 故障排查
一般建议:如果您遇到 LDAP 配置问题,打开调试日志(详见报告问题)。
无法使用 LDAP 进行身份验证
检查 teamcity-ldap.log
文件。 对于每次登录失败的尝试,都应指定一个原因。 最常见的包括:
登录过滤器与输入的登录不匹配("用户输入的登录与 teamcity.auth.loginFilter=...不匹配,正在中止")
LDAP 服务器以“无效的凭证”信息(“无法由于身份验证错误而登录用户'...')拒绝了登录。 原因:无效的凭证([LDAP:错误代码 49 - 80090308:LdapErr:DSID-0C090334,注释:AcceptSecurityContext 错误,数据 525,vece^@])")
第一个原因是登录无法用于签入,因为它不符合某个特定的筛选器。 例如,默认情况下,您无法使用 DOMAIN\用户名
登录 —— 此过滤器禁止 /
, \
和 @
符号。 查看 teamcity.auth.loginFilter
属性。
第二个错误可能由各种原因造成,例如:
您正在尝试使用您的用户名登录,但 LDAP 服务器只接受完整的 DN。
如果所有用户都存储在一个 LDAP 分支中,请使用teamcity.auth.formatDN
属性。 否则,请参阅下面的部分。检查您的 DN 和日志中的实际主体,可能存在拼写错误或未转义的序列。 尝试使用另一种 LDAP 工具用此主体登录。
尝试更改安全级别(
java.naming.security.authentication
):它可以是 "simple","strong" 或 "none"。
LDAP 中的用户存储在不同的分支中,因此不能应用 teamcity.auth.formatDN 属性。 用户如何用他们的用户名登录?
此功能从 5.0 版本开始可用。 您应该明确如何查找用户( teamcity.users.login.filter
),例如,通过用户名或电子邮件。 在每次登录时,TeamCity 都会在登录之前在 LDAP 中查找用户,获取用户 DN,然后执行绑定。 因此,您也必须为 TeamCity 定义凭据以执行搜索操作( java.naming.security.principal
和 java.naming.security.credentials
)。