我有一个运行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
声纳服务器报告以下错误:
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机制。
我也通过sonarqube使用同一个用户使用SIMPLE(不安全)机制,它正在运行&#34;正确&#34;同样。 我还尝试将密码的md5哈希值而不是密码。 我尝试了很多其他我不感兴趣的事情......
我在线阅读了许多类似的问题(堆栈溢出,其他来源),但还没有找到解决方案。 你看到我的配置有什么问题吗? 我注定要使用SIMPLE机制,让每个人的密码都以明文形式移动吗? 我不能使用CRAM-MD5和GSSAPI,因为我公司的活动目录服务不支持它。
感谢您的帮助, JC
答案 0 :(得分:2)
错误代码49中包含一个子代码,告诉您失败原因是什么。你报道了:
[LDAP: error code 49 - 8009030C: LdapErr: DSID-0C0904DC, comment: AcceptSecurityContext error, data 52e, v1db1^@]
数据52e 部分是关键。
查看list I maintain here,您会看到52e表示绑定用户的密码错误。 525对于您的用户来说是错误的DN,因此您拥有正确的LDAP DN,但密码错误。
答案 1 :(得分:0)
我刚刚遇到这个并修复了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
这可能不是你的问题,但绝对是我的。希望它有所帮助。