Active directory Sonarqube 5.6 LTS&;LDAP 2插件Active Directory配置不起作用

Active directory Sonarqube 5.6 LTS&;LDAP 2插件Active Directory配置不起作用,active-directory,ldap,sonarqube5.6,Active Directory,Ldap,Sonarqube5.6,嗨,我一直在努力让Active Directory与SonarQube 5.6 LTS一起工作 请在下面找到配置详细信息 sonar.security.realm = LDAP sonar.authenticator.downcase=false ldap.url=ldap://xxx.xxxxxx.com:3268 ldap.user.baseDn=cn=users,dc=xxxxxx,dc=com ldap.user.request = (&(objectClass=user)(s

嗨,我一直在努力让Active Directory与SonarQube 5.6 LTS一起工作

请在下面找到配置详细信息

sonar.security.realm = LDAP
sonar.authenticator.downcase=false
ldap.url=ldap://xxx.xxxxxx.com:3268

ldap.user.baseDn=cn=users,dc=xxxxxx,dc=com
ldap.user.request = (&(objectClass=user)(sAMAccountName={login}))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail

ldap.group.baseDn=cn=groups,dc=xxxxxx,dc=com
ldap.group.request=(&(objectClass=group)(member={dn}))
ldap.group.idAttribute = sAMAccountName

ldap.realm = xxxxxx.com
ldap.authentication = simple
ldap.baseDn = dc=xxxxxx dc=com
ldap.bindDn = xxxxxx\\xxxxxx
ldap.bindPassword = xxxxxxx
我确实在sonarqube日志中看到测试LDAP连接正常

2017.01.16 19:00:30 DEBUG web[o.s.p.l.LdapContextFactory] Initializing LDAP context {java.naming.provider.url=ldap://xxx.xxxxxx.com:389,
 java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory,
 java.naming.security.principal=xxxxxx\xxxxxx,
 com.sun.jndi.ldap.connect.pool=true,
 java.naming.security.authentication=simple,
 java.naming.security.sasl.realm=xxxxxx.com,
 java.naming.referral=follow}
 2017.01.16 19:00:30 INFO  web[o.s.p.l.LdapContextFactory] Test LDAP connection on ldap://xxx.xxxxxx.com:389: OK
但是,当我尝试使用LDAP用户名和密码登录时,不允许登录。在日志中观察到以下消息

 2017.01.16 16:44:28 DEBUG web[o.s.p.l.LdapUsersProvider] Requesting details for user xxxxxx\xxxxx
 2017.01.16 16:44:28 DEBUG web[o.s.p.l.LdapSearch] Search: LdapSearch{baseDn=cn=users,dc=xxxxxx,dc=com, scope=subtree,
 request=(&(objectClass=user)(sAMAccountName={0})),
 parameters=[xxxxxx\xxxxxx], attributes=[mail, cn]}
 2017.01.16 16:44:28 DEBUG web[o.s.p.l.LdapContextFactory] Initializing LDAP context {java.naming.provider.url=ldap://xxx.xxxxxx.com:389,
 java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory,
 java.naming.security.principal=xxxxxx\xxxxxx,
 com.sun.jndi.ldap.connect.pool=true,
 java.naming.security.authentication=simple,
 java.naming.security.sasl.realm=xxxxxx.com,
 java.naming.referral=follow}
 2017.01.16 16:44:28 DEBUG web[o.s.p.l.LdapUsersProvider] User xxxxxx\xxxxxx not found in <default>
 2017.01.16 16:44:28 DEBUG web[http] POST /sessions/login | time=69ms
 2017.01.16 16:44:38 DEBUG web[o.s.p.l.LdapUsersProvider] Requesting details for user xxxxxx\xxxxxx
 2017.01.16 16:44:38 DEBUG web[o.s.p.l.LdapSearch] Search: LdapSearch{baseDn=cn=users,dc=xxxxxx,dc=com, scope=subtree,
 request=(&(objectClass=user)(sAMAccountName={0})),
 parameters=[xxxxxx\xxxxxx], attributes=[mail, cn]}
 2017.01.16 16:44:38 DEBUG web[o.s.p.l.LdapContextFactory] Initializing LDAP context {java.naming.provider.url=ldap://DC1.xxxxxx.com:389,
 java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory,
 java.naming.security.principal=xxxxxx\xxxxxx,
 com.sun.jndi.ldap.connect.pool=true,
 java.naming.security.authentication=simple,
 java.naming.security.sasl.realm=xxxxxx.com,
 java.naming.referral=follow}
 2017.01.16 16:44:38 DEBUG web[o.s.p.l.LdapUsersProvider] User xxxxxx\xxxxxx not found in <default>
 2017.01.16 16:44:38 DEBUG web[http] POST /sessions/login | time=55ms
2017.01.16 16:44:28调试web[o.s.p.l.LdapUsersProvider]请求用户xxxxxx\xxxxx的详细信息
2017.01.16 16:44:28调试web[o.s.p.l.LdapSearch]搜索:LdapSearch{baseDn=cn=users,dc=xxxxxx,dc=com,scope=subtree,
请求=(&(objectClass=user)(sAMAccountName={0})),
参数=[xxxxxx\xxxxxx],属性=[mail,cn]}
2017.01.16 16:44:28调试web[o.s.p.l.LdapContextFactory]初始化LDAP上下文{java.naming.provider.url=ldap://xxx.xxxxxx.com:389,
java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory,
java.naming.security.principal=xxxxxx\xxxxxx,
com.sun.jndi.ldap.connect.pool=true,
java.naming.security.authentication=simple,
java.naming.security.sasl.realm=xxxxxx.com,
java.naming.reference=follow}
2017.01.16 16:44:28在中找不到调试web[o.s.p.l.LdapUsersProvider]用户xxxxxx\xxxxxx
2017.01.16 16:44:28调试web[http]发布/会话/登录|时间=69毫秒
2017.01.16 16:44:38调试web[o.s.p.l.LdapUsersProvider]请求用户xxxxxx\xxxxxx的详细信息
2017.01.16 16:44:38调试web[o.s.p.l.LdapSearch]搜索:LdapSearch{baseDn=cn=users,dc=xxxxxx,dc=com,scope=subtree,
请求=(&(objectClass=user)(sAMAccountName={0})),
参数=[xxxxxx\xxxxxx],属性=[mail,cn]}
2017.01.16 16:44:38调试web[o.s.p.l.LdapContextFactory]初始化LDAP上下文{java.naming.provider.url=ldap://DC1.xxxxxx.com:389,
java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory,
java.naming.security.principal=xxxxxx\xxxxxx,
com.sun.jndi.ldap.connect.pool=true,
java.naming.security.authentication=simple,
java.naming.security.sasl.realm=xxxxxx.com,
java.naming.reference=follow}
2017.01.16 16:44:38在中找不到调试web[o.s.p.l.LdapUsersProvider]用户xxxxxx\xxxxxx
2017.01.16 16:44:38调试web[http]发布/会话/登录|时间=55毫秒
到目前为止,我已经尝试了以下方法:

  • 尝试使用端口:3268/389
  • 已尝试从命令行进行ldapsearch
    ldapsearch-Hldap://xxx.xxxxx.com:3268 dc=xxxxx,dc=com-D'xxxxxx\xxxxxx'-W
    但这也返回空
  • 我只有一个本地配置的管理员用户,我可以作为管理员登录

    当我在Jenkins上配置Active directory时,相同的用户名和服务器详细信息工作得很好


    我哪里做错了?我可以尝试的其他选项是什么?

    ldap.bindDn=ntdomain\logonid肯定是个坏主意,因为sonarqube(根据您提供的跟踪)使用过滤谓词(sAMAccountName=ntdomain\logonid)搜索AD用户条目。对于ldap.bindDn,您应该只使用sAMAccountname


    您需要指定用户的可分辨名称(类似于cn=…,cn=users,dc=company,dc=tld)要将ldapsearch绑定到AD,因为没有从sAMAccountName到ldapsearch工具提供的dn的映射。

    我更正为ldap.bindDn=logonid.SonarQube在这种情况下无法启动,出现以下错误。'2017.01.18 12:03:01信息web[o.s.p.l.LdapContextFactory]测试ldap连接:失败2017.01.18 12:03:01错误web[o.a.c.c.]。[/]]将上下文初始化事件发送到类org.sonar.server.PlatformServletContextListener org.sonar.plugins.ldap.LdapException的侦听器实例时出现异常:无法打开ldap连接如果使用ldap.bindDn,Sonarqube已启动=login@domain.com但是错误一直存在,实际上,我误解了你的日志摘录,当我认为当明显显示用户登录尝试时,您的ldap.bindDn将被映射。因此,如果使用服务帐户的dn,我希望SonarQube成功绑定到AD。这是您的{login}由于ldap.user.request模板只需要不合格的sAMAccountName,因此不能将其作为ntdomain\logonid提供。当然,您也可以调整模板以使用userPrincipalName。