我有一个运行的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机制。
我还使用了相同的用户通过sonarqube使用简单(不安全)机制,并且它也“正常”工作。 我还尝试将密码的md5哈希值放入其中,但都没有成功。 我试过很多其他的方法,但都没能解决问题...
我在网上阅读了许多类似的问题(stackoverflow等),但仍然找不到解决方案。 您看到我的配置有什么问题吗? 我是否注定要使用简单机制,让每个人的密码以明文形式传输? 由于公司的Active Directory服务不支持CRAM-MD5和GSSAPI,所以我无法使用这两种机制。