Sonarqube 授权 - 如何在启用 sonar.forceAuthentication 时使用 sonar-maven-plugin 进行授权

Posted

技术标签:

【中文标题】Sonarqube 授权 - 如何在启用 sonar.forceAuthentication 时使用 sonar-maven-plugin 进行授权【英文标题】:Sonarqube authorization - how to authorize with sonar-maven-plugin when sonar.forceAuthentication is enabled 【发布时间】:2018-02-17 05:39:11 【问题描述】:

我有带有默认配置的 sonarqube 6.5。当 sonar.forceAuthentication 标志设置为 false 时,我可以通过下面给出的命令创建和分析项目。

mvn sonar:sonar -Dsonar.host.url=https://mySonarHost/sonar -Dsonar.login=mySonarUserKey

当我启用 sonar.forceAuthentication 参数 (sonar.forceAuthentication=true) 时,我无法分析项目。我总是遇到 Maven 错误:

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar (default-cli) on project storm: Not authorized. Please check the properties sonar.login and sonar.password. -> [Help 1]

它不适用于默认管理员帐户或创建的用户帐户(具有分析项目的权限)。我也尝试不使用用户密钥,但用户的登录名和密码(-Dsonar.login-Dsonar.password 在 maven 配置中)但它也不起作用。 我尝试使用不同的声纳版本(从 4.5.7 到 5.6.6 到最新的 6.5,但我总是得到相同的结果)。

在连接期间,我的 access.log 中有这样的消息:

IP_ADDRESS - - [08/Sep/2017:12:03:33 +0200] "GET /sonar/batch/index HTTP/1.1" 200 - "-" "ScannerMaven/3.3.0.603/3.5.0" "SOME_KEY"
IP_ADDRESS - - [08/Sep/2017:12:03:33 +0200] "GET /sonar/api/settings/values.protobuf HTTP/1.1" 401 - "-" "ScannerMaven/3.3.0.603/3.5.0" "SOME_KEY"

我需要将 sonar.forceAuthentication 参数设置为 true(只有受信任的用户才能访问它)。

知道如何使用凭证参数通过 maven 配置和访问 sonarqube 吗?

【问题讨论】:

如果登录名/密码无效,您可能前面有一个身份验证反向代理。我做到了,但失败了。当我删除它时,它起作用了。也就是说,我还没有得到从 Maven 工作的令牌。你是否?我的问题在这里:***.com/questions/48347351/… 【参考方案1】:

我在 -D 之后添加了一个空格,一切都很好!

【讨论】:

【参考方案2】:

这是我用来为我的项目更新 Sonar Cube Dashboard 的最小命令,

mvn clean install  sonar:sonar -Dsonar.host.url=<Server_URL> -Dsonar.login=<Token_For_Your_User_Id> -Dsonar.projectKey=<It will be calculated by default using group id & artifact id but its advisable that you use a unique string for all users> -Dsonar.projectName=<Descriptive Project Name to show on dashboard> -Dsonar.projectVersion=<if you wish to specify a version number>

如果字符串中包含空格,您始终可以将其括在双引号中。

在使用上述命令之前,您需要为 Eric 提供的答案中指定的用户 ID 生成令牌。无需传递密码属性。

【讨论】:

【参考方案3】:

您是否同时设置了sonar.loginsonar.password 参数(https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven#AnalyzingwithSonarQubeScannerforMaven-Security)?

请注意,在最近的版本(如 SonarQube 6.5)中,您应该使用用户令牌并在 sonar.login 参数中设置它:https://docs.sonarqube.org/display/SONAR/User+Token

【讨论】:

以上是关于Sonarqube 授权 - 如何在启用 sonar.forceAuthentication 时使用 sonar-maven-plugin 进行授权的主要内容,如果未能解决你的问题,请参考以下文章

SonarQube代码覆盖率的增量分析

Sonarqube 扫描仪错误 DirectoryNotEmptyException

SonarQube 没有从 lcov 读取 javascript 测试覆盖率

SonarQube 7.9.1 无法扫描通过 Jenkins 运行的 .net 项目的 .cs 和 sql 文件

Sonarqube6.7缺少'import unknown files'选项

SonarQube 错误:组件密钥长度超过授权的最大长度