【发布时间】: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 服务不支持它们。
【问题讨论】:
-
您确认您使用的是 LDAP 插件而不是 Azure Active Directory plugin?
-
是的,我正在使用 ldap 插件,版本 1.5.1
-
你的意思是你有一些提示,还是需要更多提示? :)
-
可能是我配置 ldap.bindDn 和 ldap.bindPassword 的方式有误。它们应该是明文吗?还是加密的?如果是,怎么做?
标签: active-directory ldap sonarqube sasl sonarqube-ops