4

我有一个正在运行的 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,因为我公司的活动目录服务不支持它们。

4

2 回答 2

2

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

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

数据52e部分是关键。

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

于 2016-07-19T18:16:10.290 回答
1

我刚刚遇到这个并在 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

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

于 2017-09-07T01:06:36.280 回答