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.login
和sonar.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 扫描仪错误 DirectoryNotEmptyException
SonarQube 没有从 lcov 读取 javascript 测试覆盖率
SonarQube 7.9.1 无法扫描通过 Jenkins 运行的 .net 项目的 .cs 和 sql 文件