我正在努力为Active Directory配置LDAP 2.0 plugin for Sonarqube 5.6.3 LTS。我阅读了所有插件文档,并在我们的环境中得到了这个:
# LDAP configuration
# General Configuration
sonar.security.realm=LDAP
sonar.security.savePassword=false
sonar.forceAuthentication=true
ldap.url=ldap://ad1.prod:1389
ldap.bindDn=CN=myUser,OU=Service-Accounts,DC=ad1,DC=prod
ldap.bindPassword=myPassword
# User Configuration
ldap.user.baseDn=DC=ad1,DC=prod
ldap.user.request=(&(objectClass=inetOrgPerson)(uid={login}))
ldap.user.realNameAttribute=displayName
ldap.user.emailAttribute=mail
当我开始Sonarqube时,我得到了:
INFO web[org.sonar.INFO] Security realm: LDAP
INFO web[o.s.p.l.LdapSettingsManager] User mapping: LdapUserMapping{baseDn=DC=ad1,DC=prod, request=(&(objectClass=inetOrgPerson)(uid={0})), realNameAttribute=displayName, emailAttribute=mail}
INFO web[o.s.p.l.LdapSettingsManager] Groups will not be synchronized, because property 'ldap.group.baseDn' is empty.
INFO web[o.s.p.l.LdapContextFactory] Test LDAP connection: FAIL
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
at org.sonar.plugins.ldap.LdapContextFactory.testConnection
我尝试过调整配置但没有运气。任何对此更熟悉的人都有什么突出的地方?
答案 0 :(得分:6)
更有效地搜索AD将类似于:
ldap.user.request=(&(objectClass=user)(sAMAccountName={login}))
答案 1 :(得分:3)
基本问题是错误的LDAP端口:
ldap.url=ldap://ad1.prod:1389
应该是
ldap.url=ldap://ad1.prod:389
我从不打算质疑1389端口,即使这不是默认的LDAP端口,因为我从另一个工作应用程序复制/粘贴。我想我在这个过程中会发现一些东西。
另外,这个:
ldap.user.request=(&(objectClass=inetOrgPerson)(uid={login}))
必须是这样的:
ldap.user.request=(sAMAccountName={0})
实际启用搜索AD。这是特定于实现的事情。