【问题标题】:sonarqube - active directory ldap error code 49sonarqube - 活动目录 ldap 错误代码 49
【发布时间】:2016-11-15 17:48:34
【问题描述】:

我有一个正在运行的 sonarqube 5.5 实例。 我想使用 sonar-ldap-plugin 1.5.1 将身份验证和授权委托给我公司的 Active Directory 服务。

LDAP 插件的配置如下(模一些混淆):

sonar.authenticator.createUsers=false
sonar.security.savePassword=false
sonar.security.realm=LDAP
ldap.url=ldap://host.my.domain

ldap.user.baseDn=OU=Users,OU=Organic Units,DC=my,DC=domain
ldap.user.request=(&(objectClass=user) (sAMAccountName={login}))
ldap.authentication=DIGEST-MD5
ldap.bindDn=CN=harmlessServiceAccount,OU=users,OU=Organic Units,DC=my,DC=domain
ldap.bindPassword=<the user password in clear text>

sonar.log.level=DEBUG

并且sonarqube服务器报如下错误:

2016.07.13 10:19:38 INFO  web[o.s.p.l.LdapContextFactory] Test LDAP connection: FAIL
2016.07.13 10:19:38 ERROR web[o.a.c.c.C.[.[.[/]] Exception sending context initialized event to listener instance of class org.sonar.server.platform.PlatformServletContextListener 
java.lang.IllegalStateException: Unable to open LDAP connection
...
Caused by: javax.naming.AuthenticationException: [LDAP: error code 49 - 8009030C: LdapErr: DSID-0C0904DC, comment: AcceptSecurityContext error, data 52e, v1db1^@]
...

我使用 ldapsearch 进行了完全相同的查询,但没有遇到任何问题。所以我认为Active Directory服务是正确的,接受这个用户和DIGEST-MD5 SASL机制。

我还通过带有 SIMPLE(不安全)机制的 sonarqube 使用了同一个用户,它也“正常”工作。 我还尝试将密码的 md5 哈希而不是密码。 而且我尝试了很多其他我并不引以为豪的事情......

我在网上阅读了许多类似的问题(堆栈溢出、其他来源),但还没有找到解决方案。 你看到我的配置有什么问题吗? 难道我注定要使用 SIMPLE 机制,让每个人的密码都以明文形式移动? 我既不能使用 CRAM-MD5 也不能使用 GSSAPI,因为我公司的 Active Directory 服务不支持它们。

【问题讨论】:

标签: active-directory ldap sonarqube sasl sonarqube-ops


【解决方案1】:

错误代码 49,其中有一个子代码,告诉您失败的原因是什么。您报告:

[LDAP: error code 49 - 8009030C: LdapErr: DSID-0C0904DC, comment: AcceptSecurityContext error, data 52e, v1db1^@]

data 52e 部分是关键。

查看list I maintain here,您会看到 52e 表示您的绑定用户的密码错误。 525 对您的用户来说是错误的 DN,因此您的 LDAP DN 正确,但密码错误。

【讨论】:

  • 感谢您指出这一点,但凭据是正确的。使用另一个工具的相同请求,例如ldapsearch,显示 ldap 查询本身(凭证、端口等)没有任何问题。现在,我不确定sonarqube配置文件是否以明文形式获取密码,或者是否应该以某种方式加密(如果是,以何种方式加密),我无法从sonarqube文档中弄清楚。
  • @JCh 请参阅this 文档页面。配置文件中的所有部分都可以加密。
  • 谢谢,我也试过了,但没有用。它给出了同样的错误。
【解决方案2】:

我刚刚遇到这个问题,并在 sonarqube 6.x 上修复了它。和 ldap 插件 2.2

我发现 52e 会有点误导,因为它可能是无效的密码,但如果登录不正确,也有可能。 http://ldapwiki.com/wiki/Common%20Active%20Directory%20Bind%20Errors

我的配置中有以下内容

ldap.bindDn=domain\query_account

这适用于其他事情,但不适用于 SonarQube。您的sonar.log.level=DEBUG 行实际上帮助了我,我打开它并显示了问题,我需要转义\ 字符。所以这对我有用。

ldap.bindDn=domain\\query_account

这可能不是你的问题,但绝对是我的问题。希望对您有所帮助。

【讨论】:

  • 它确实对我有所帮助,因为它与 digest-md5 一起显示,bindDN 应该只包含用户名 (harmlessServiceAccount),以 SALS 领域 (mydomain.my) 为前缀,而不是类似:ldap。 bindDn=CN=harmlessServiceAccount,OU=users,OU=Organic Units,DC=my,DC=domain.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
  • 2018-11-11
  • 2011-11-29
  • 2014-07-04
  • 1970-01-01
  • 2015-10-03
  • 2019-10-13
相关资源
最近更新 更多