Sonar REST / Web API中的授权

时间:2017-05-05 06:48:15

标签: sonarqube sonarqube6.3

将我的声纳版本从 5.4 移植到 6.3.1 。 在5.4版本中,Sonar没有提供登录API。 因此,我们在每个调用中添加一个Authorization标头,其值为Base64编码的“username”:“password”。

但是迁移到6.3.1后,授权会因当前实施而失败。

我们尝试将令牌(从UI生成)作为授权标头的值传递但是徒劳无功。

我们还尝试调用Sonar登录API(api / authentication / login),但它没有回复任何响应。

请帮助我们解决此问题。

感谢。

修改

以下是调用REST Webservice的代码:

byte[] encodedUsernamePassword = Base64.getEncoder().encode("adminUserName:adminPassword".getBytes());

ResteasyClient client = new ResteasyClientBuilder().build();
    String target = "http://IP:Port/api/issues/search/?statuses=" + "CLOSED" + "&assignees=" + username + "&resolutions=" + "FIXED" + "&createdBefore=" + end_date + "&createdAfter=" + start_date + "&facetMode=debt";

javax.ws.rs.core.Response response = client.target(target).request(MediaType.APPLICATION_JSON).header("Authorization", new String(encodedUsernamePassword)).get();

String strResponse = response.readEntity(String.class);

1 个答案:

答案 0 :(得分:1)

第一件事: api / authentication / login 在这里没有任何帮助。根据{{​​3}},Web API身份验证是通过HTTP基本身份验证进行的。

因此,只需在每个Web API请求的标头中传递用户名/密码即可。如果您使用用户令牌,则按Web API documentation

  

这是推荐的方法。优惠在页面same documentation中描述。 令牌通过HTTP基本身份验证的登录字段发送,没有任何密码