SonarScanner.MsBuild执行报错:无效凭证致访问被拒,求排查
问题诊断
你的Unauthorized: Access is denied due to invalid credentials错误源于认证凭证配置错误,具体问题如下:
1. 误用项目令牌替代用户令牌
你在扫描命令中使用的sqp_开头的是项目令牌,这类令牌仅用于限定第三方工具对单个项目的只读访问,无法用于执行代码扫描操作。扫描必须使用用户令牌(格式为squ_开头,也就是你在SonarQube中创建的那个令牌)。
2. 配置文件中存在冲突的认证参数
SonarQube.Analysis.xml里同时配置了sonar.login、sonar.password和sonar.token,这会让SonarScanner的认证逻辑混乱:
- 当
sonar.token存在时,账号密码参数会被忽略,但你命令行里传入了错误的令牌,直接导致认证失败。 - 正确做法是只保留一种认证方式:要么用账号密码组合,要么用用户令牌(二选一即可)。
3. 命令行参数覆盖了正确配置
你命令行中指定的sonar.token是错误的项目令牌,它会覆盖配置文件里的正确用户令牌,这是直接触发错误的原因。
修复方案
- 修正扫描命令:把命令里的
sqp_ec60....a7e1替换成你生成的用户令牌(squ_7b.......601):
SonarScanner.MSBuild.exe begin /k:"TEST_PROJECT-local" /d:sonar.host.url="http://localhost:9000" /d:sonar.token="squ_7b.......601"
- 清理配置文件冗余项:编辑
SonarQube.Analysis.xml,删除sonar.login和sonar.password,只保留必要配置:
<Property Name="sonar.host.url">http://localhost:9000</Property> <Property Name="sonar.token">squ_7b.......601</Property>
验证令牌权限:确保生成用户令牌的账号拥有
TEST_PROJECT-local项目的扫描者或管理员权限,权限不足也会触发认证失败。重新执行扫描流程:删除项目根目录下的
.sonarqube缓存文件夹,然后依次执行:- 修正后的
begin命令 - 你的项目构建命令(比如
MSBuild.exe或dotnet build) SonarScanner.MSBuild.exe end命令完成扫描
- 修正后的
内容的提问来源于stack exchange,提问作者rbasniak
相关产品推荐
相关产品推荐

