Sonarqube Web API:对私人项目的权限不足

Sonarqube Web API:对私人项目的权限不足,sonarqube,Sonarqube,配置详细信息 我们有一个SonarQube 6.7.2(build 37468)内部安装正在运行 该实例可以从我们的office IP访问,而无需使用HTTP Basic Auth,也可以从其他任何地方使用HTTP Basic Auth访问 “强制用户身份验证”选项已关闭 所有项目都设置为私有-以防有人通过HTTP基本身份验证 我的用户属于sonar管理员组,对所有项目都具有“浏览”和“查看源代码”权限 使用浏览器中的web界面,我可以看到所有项目,包括预期的分析结果等 问题 但是,使用Web

配置详细信息

我们有一个SonarQube 6.7.2(build 37468)内部安装正在运行

该实例可以从我们的office IP访问,而无需使用HTTP Basic Auth,也可以从其他任何地方使用HTTP Basic Auth访问

“强制用户身份验证”选项已关闭

所有项目都设置为私有-以防有人通过HTTP基本身份验证

我的用户属于sonar管理员组,对所有项目都具有“浏览”和“查看源代码”权限

使用浏览器中的web界面,我可以看到所有项目,包括预期的分析结果等

问题

但是,使用Web API,我在几个API调用中收到“权限不足”错误

我的用户有一个我传递给cURL的有效令牌。我甚至创建了一个新的令牌,以确保我没有使用无效的令牌

示例

$ curl -X GET -u my_user_token: https://sonar.example.org/api/measures/search_history?component=the_project&metrics=lines_to_cover%2Cuncovered_lines%2Ccoverage&ps=1000
{"errors":[{"msg":"Insufficient privileges"}]}
问题

对于设置为私有的项目,是否无法通过API检索度量信息或项目信息

如果该项目是公开的,上述调用可以正常工作。(但是,如果项目设置为public,那么即使没有身份验证,该调用也可以正常工作。)

我们在为PHPStorm使用SonarLint插件时也遇到了同样的问题。只要项目是公共的,插件就可以正常工作,但一旦项目设置为私有,服务器同步就会停止工作


我在想,如果每个人都想从他们的家庭办公室访问该实例,最好是拒绝所有对SonarQube的请求,除了来自我们的白名单上的office IP,并让他们通过VPN连接。这将使我们能够公开所有项目,而不存在任何这些问题。这是运行SonarQube内部安装的推荐方法吗?

结果表明,SonarQube实例是在一个nginx反向代理之后运行的,该代理在将请求传递给SonarQube之前从请求中删除了
授权
HTTP头


在修复nginx配置后,所有Web API调用都能正常工作。

首先,您应该使用“私有”功能仅用于授权管理,而不是为了获得更安全的服务器。然后,关于使用WS时的“权限不足”消息:您确认UI中没有问题吗?如果是,您确定您使用的是同一用户吗?@JulienL.-sonasourceteam感谢您的反馈。是的,我在使用UI时没有任何问题,我使用的是同一个用户。如果我们将项目设置为公共,每个未经授权的用户都可以自由浏览项目。除了将“强制用户身份验证”设置为“打开”,我们没有找到限制来宾用户访问的选项。但这样做破坏了我们在Jenkins的构建,因为扫描器无法再访问SonarQube。我认为我们应该一次关注一个问题:在我这方面,我试图理解的是,为什么在UI中可以访问私有项目,但在使用WS时却不能。你是如何执行WS-call的?@JulienL.-SourceTeam嘿,谢谢你的反馈。Sysadmin刚刚授予我访问服务器的权限,我发现nginx反向代理在将请求传递给SonarQube之前删除了授权头。解决了这个问题后,WS调用现在可以按预期工作了。再次感谢您的帮助,非常感谢!好消息!你能补充一下你的问题吗?它将允许不设置这个没有任何答案的问题。