sonarqube - 活动目录 LDAP 错误代码 49

JCh*_*JCh 5 ldap sasl active-directory sonarqube sonarqube-ops

我有一个正在运行的 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
Run Code Online (Sandbox Code Playgroud)

并且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^@]
...
Run Code Online (Sandbox Code Playgroud)

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

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

我在线阅读了许多类似的问题(堆栈溢出,其他来源),但尚未找到解决方案。您发现我的配置有什么问题吗?我是否注定要使用 SIMPLE 机制并让每个人的密码以明文形式移动?我无法使用 CRAM-MD5 和 GSSAPI,因为我公司的活动目录服务不支持它们。

geo*_*ffc 2

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

[LDAP: error code 49 - 8009030C: LdapErr: DSID-0C0904DC, comment: AcceptSecurityContext error, data 52e, v1db1^@]
Run Code Online (Sandbox Code Playgroud)

数据52e部分是关键。

查看我在这里维护的列表,您将看到 52e 意味着您的绑定用户的密码错误。525 对于您的用户来说是错误的 DN,因此您拥有正确的 LDAP DN,但密码错误。