Web API:私有项目的权限不足

时间:2018-04-23 11:01:34

标签: sonarqube

配置详细信息

我们正在运行一个SonarQube 6.7.2(内部版本37468)本地安装。

可以从我们的办事处IP HTTP Basic Auth以及其他任何地方 HTTP Basic Auth。

访问该实例。

强制用户身份验证"选项已关闭。

所有项目都设置为私有 - 以防有人通过HTTP Basic Auth。

我的用户属于声纳管理员群组,并且有#34;浏览"和"参见源代码"所有项目的权限。

使用浏览器中的网络界面,我能够按预期看到所有项目,包括分析结果等。

问题

然而,使用Web API,我收到"权限不足"几个API调用的错误。

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

示例

$ 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为设置为私有的项目检索度量信息或项目信息?

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

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

我想也许最好拒绝向SonarQube发出的所有请求,除了我们列入白名单的办公室IP,并且如果他们想要从他们的家庭办公室访问该实例,则让每个人都通过VPN连接。这将使我们能够公开所有项目,而不会出现任何这些问题。这是运行SonarQube的内部部署安装的推荐方法吗?

1 个答案:

答案 0 :(得分:1)

原来SonarQube实例在nginx反向代理后面运行,该代理在将请求传递给SonarQube之前从请求中删除了Authorization HTTP头。

修复nginx配置后,所有Web API调用都按预期工作。