启用 LDAP 时的 SonarQube 令牌访问

SonarQube token access when LDAP is enabled

刚刚建立了一个全新的 SonarQube 6.7.1 服务器并将其配置为通过 LDAP 插件对用户进行身份验证(2.2 build 608 ).到目前为止一切顺利。

但是,当用户尝试 运行 使用带有令牌的 maven 进行命令行扫描时:

mvn sonar:sonar -Dsonar.login=438fd33be6d6e5c9146c674717fea4675f0eb

...他们收到以下错误:

Not authorized. Please check the properties sonar.login and sonar.password.

Sonar 日志显示:

2018.01.19 18:20:14 DEBUG web[AWELLmgpg7dbJTF2AALW][o.s.p.l.LdapUsersProvider] User 438fd33be6d6e5c9146c674717fea4675f0eb not found in <default> 2018.01.19 18:20:14 DEBUG web[AWELLmgpg7dbJTF2AALW][auth.event] login failure [cause|No user details][method|BASIC][provider|REALM|LDAP]

这使得 Sonar 的 LDAP 插件看起来像是在尝试在 LDAP 上查找其名称将是访问令牌的用户。显然这行不通!

我们使用的sonar maven插件版本3.4.0.905.

编辑:相同的标记适用于 IntelliJ SonarLint。这似乎表明 Maven 插件在这里有问题。

感谢@agabrys 的提示。

运行 这个 Maven 命令:

mvn clean verify help:evaluate -Dexpression="sonar.password" -Dsonar.login=438fd33be6d6e5c9146c674717fea4675f0eb

返回:

admin

为了接受令牌,密码必须为空。一定是 Maven sonar 插件设置了这个默认密码!!通过此设置默认密码为空:

mvn clean verify sonar:sonar -Dsonar.password= -Dsonar.login=438fd33be6d6e5c9146c674717fea4675f0eb 

工作。

如果在添加空密码选项后仍然拒绝工作,请尝试在 -D

之后添加一个 space