Sonarqube 权限不足-Web服务API

Sonarqube 权限不足-Web服务API,sonarqube,Sonarqube,我想访问web服务API来检查项目的一些信息,特别是关于代码覆盖率的信息。我尝试使用的请求URL是: https://<host>/api/coverage/show?key=<project-key> 我是通过cookie中的有效会话登录的,我拥有所有必要的权限(即浏览权限)。那么为什么我不能获取数据呢?如文档所述,此API要求用户对项目具有“浏览”权限。您需要使用基本身份验证将凭据传递到服务器,它应该可以工作 您需要在请求的HTTP头中传递Authorization

我想访问web服务API来检查项目的一些信息,特别是关于代码覆盖率的信息。我尝试使用的请求URL是:

https://<host>/api/coverage/show?key=<project-key>
我是通过cookie中的有效会话登录的,我拥有所有必要的权限(即浏览权限)。那么为什么我不能获取数据呢?

如文档所述,此API要求用户对项目具有“浏览”权限。您需要使用基本身份验证将凭据传递到服务器,它应该可以工作

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

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

恰好要使用的名称不是它在仪表板中显示的名称

要查找值的真实名称,请执行以下操作:

  • 在SonarQube中浏览到要获取覆盖率的文件
  • 将鼠标悬停在左上角的项目标题上。出现的链接应如下所示:

  • 使用该“项目名称”,即使其中已经有冒号

    http://server/api/coverage/show?key=server-name:path-to-file
    
    其中“文件路径”类似于src/main/java/myFile.java

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

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

    SonarQube返回的错误消息无疑是完全误导性的。

    打开时您看到了什么https:///dashboard/index?id= 在浏览器中?如果您看到该文件,则应该从WS-Server获取数据。比如在Nemo上,我看到了我项目的仪表板,但API返回“权限不足”看到同样的问题我自己访问
    http://localhost:9000/api/ce/task?id=AVE--W-cg-abcdefghijk
    在sonar runner Scan的末尾输出。我尝试用fiddler和相应的auth头键,以及Base64编码的用户名和密码,组成这样一个请求(如我所述)。但一切都没有改变。我将检索相同的响应。不幸的是,文档中似乎有一个bug。所需的权限似乎是“查看源代码”,而不是“浏览”。谢谢Simon。凯文,你有服务器的管理员权限吗?您可以尝试使用这些凭据,只是为了确保访问权限不受影响,并且API正在按预期方式工作。另外,你使用的是哪个版本的声纳?我不认为这是用户权限的问题。因为作为管理员,我们也会遇到同样的错误。也许声纳配置中缺少了一些额外的东西?我们正在使用SonarQube 4.5.1(LTS)。顺便说一下:我也有“查看源代码”的权限。
    curl -u user:password http://server/api/coverage/show?key=server-name:path-to-file