sonarqube 5.6& LDAP 2.0无法进行身份验证

时间:2016-07-26 23:01:19

标签: ldap sonarqube sonarqube-ops sonarqube5.6

我正在测试升级到sonarqube 5.6并安装了ldap 2.0插件&将相关配置复制到我的测试5.6设置。

相关配置

sonar.security.realm=LDAP
ldap.url=ldaps://xxxx:636
ldap.bindDn=uid=xxxx,ou=xxxx,dc=xxxx,dc=xxxx
ldap.bindPassword=xxxx
ldap.user.baseDn=dc=xxxx,dc=com
ldap.user.request=(&(objectClass=person)(mail={login}))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail

我在conf / sonar.properties

中设置了以下内容
sonar.log.level=DEBUG

启动时我看到了

2016.07.26 23:57:29 INFO  web[o.s.p.l.LdapContextFactory] Test LDAP connection on ldaps://xxxx:636: OK
2016.07.26 23:57:29 INFO  web[org.sonar.INFO] Security realm started

如果我尝试登录,我会得到"身份验证失败"在登录屏幕上。 日志文件除了

之外什么也没说
2016.07.26 23:57:47 DEBUG web[http] GET / | time=67ms
2016.07.26 23:57:47 DEBUG web[http] GET / | time=187ms
2016.07.26 23:57:47 DEBUG web[http] GET /sessions/new | time=89ms
2016.07.26 23:57:53 DEBUG web[http] POST /sessions/login | time=71ms

相同的配置适用于sonarqube 4.5.7和ldap 1.4

欢迎关于如何进一步调查的想法。

3 个答案:

答案 0 :(得分:5)

您最有可能遇到已知问题SONAR-7770 - 如果在升级过程中忘记了LDAP配置,则身份验证失败。请注意,此问题已发出Upgrade Note

  

最明确的是,不要忘记将相关的SonarQube插件及其相关配置复制到" conf / sonar.properties" (包括" sonar.security.realm"和#34; sonar.security.localUsers"如果存在)进入新的SonarQube实例,否则您将在迁移后被锁定。

因此,在强升级期间,此LDAP配置甚至非常重要。如果您确实错过了,那么此处最简单的方法是使用正确设置的LDAP相关配置重播升级。

上下文

请记住,在升级过程中,SonarQube会更新数据集并将新信息存储在数据库中(基于新功能)。你的情况下的问题是升级是通过部分配置完成的(没有设置sonar.security.realmsonar.security.localUsers),SonarQube无法确定用户是否是本地的或不,因此默认情况下将它们视为本地。本地用户不是针对外部身份验证提供程序进行身份验证,而是针对本地用户进行身份验证,这确实是我们在您的日志中看到的(并且由于密码存在于LDAP服务器中,而不是SonarQube数据库中,因此它显然失败了)。 p>

答案 1 :(得分:3)

我通过手动更新SonarQube的用户数据库表来修复它,因为所有其他用户都是由LDAP管理的,只有 admin 是本地用户:

[id$=_x3C_object_x3E_]:hover {
  fill: red;
  stroke: blue;
}

答案 2 :(得分:2)

对上述Schakko查询的修复很少,应该是login而不是id

UPDATE users SET user_local = 0, external_identity_provider = 'ldap' WHERE login != 'admin';