【问题标题】:Insufficient privileges - Web service API权限不足 - Web 服务 API
【发布时间】:2015-07-16 07:02:10
【问题描述】:

我想访问 Web 服务 API 以检查项目的一些信息,尤其是代码覆盖率。我尝试使用的请求 URL 是:

https://<host>/api/coverage/show?key=<project-key>

问题是我只会得到以下响应:

{
    errors: [
        {
            msg: "Insufficient privileges"
        }
    ]
}

我通过 cookie 中的有效会话登录,并且我拥有所有必要的权限(即浏览权限)。那为什么我无法获取数据?

【问题讨论】:

  • 在浏览器中打开 https:///dashboard/index?id= 会看到什么?如果您看到该文件,您应该从 WS 获取数据。比如在 Nemo nemo.sonarqube.org/dashboard/… 和 nemo.sonarqube.org/api/coverage/…
  • 事情就是这样:我看到了我的项目的仪表板,但 API 返回“权限不足”
  • 我自己访问http://localhost:9000/api/ce/task?id=AVE--W-cg-abcdefghijk时看到同样的问题,在声纳跑步者扫描结束时输出

标签: sonarqube


【解决方案1】:

如文档 here 所述,此 API 要求用户对项目具有“浏览”权限。您需要使用 Basic Auth 将凭据传递给服务器,它应该可以工作。

您需要在请求的 HTTP 标头中传递 Authorization: Basic &lt;base64encoded-username-password&gt;。你可以找到很多工具来生成代码,我使用 fiddler。在提琴手中,转到工具-> 文本向导。在对话框中输入username:password(例如admin:admin)并选择“ToBase64”。将此代码复制到 HTTP 标头中,然后尝试再次发送请求。

【讨论】:

  • 我尝试使用 fiddler 和相应的 auth 标头键以及 base64 编码的用户名和密码来编写这样的请求(所以,就像已经描述的那样)。但一切都没有改变。我将检索相同的响应。
  • 不幸的是,文档中似乎存在错误。所需的权限似乎是“查看源代码”而不是“浏览”。
  • 谢谢西蒙。凯文,你有服务器的管理员权限吗?您可以尝试使用这些凭据,以确保访问权限不受影响,并且 API 正在按预期的方式工作。另外,您使用的是哪个版本的 Sonar?
  • 我不认为这是用户权限的问题。因为同样作为管理员,我们也会遇到同样的错误。也许声纳配置中缺少一些额外的东西?我们正在使用 SonarQube 4.5.1 (LTS)。顺便说一句:我也有“查看源代码”权限。
【解决方案2】:

我遇到了同样的问题(SonarQube 4.5),结果发现问题出在项目名称中,即 key 参数第一部分的值(冒号之前) )。

碰巧要使用的名称不是它出现在仪表板中的名称。

要找出值的真实名称:

  1. 在 SonarQube 中浏览到要覆盖的文件
  2. 将鼠标悬停在左上角的项目标题上。出现的链接应该是这样的:

    http://server/dashboard/index/project-name

使用那个“项目名称”,即使它已经有一个冒号。

http://server/api/coverage/show?key=server-name:path-to-file

“文件路径”类似于 src/main/java/myFile.java

最后不要忘记身份验证部分。 使用卷曲:

curl -u user:password http://server/api/coverage/show?key=server-name:path-to-file

SonarQube 返回的错误信息肯定是完全误导。

【讨论】:

    猜你喜欢
    • 2013-01-09
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2017-04-24
    • 2015-08-20
    • 2015-10-01
    • 2016-01-17
    • 1970-01-01
    相关资源
    最近更新 更多