我将我的声纳版本从 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);
答案 0 :(得分:1)
第一件事: api / authentication / login 在这里没有任何帮助。根据{{3}},Web API身份验证是通过HTTP基本身份验证进行的。
因此,只需在每个Web API请求的标头中传递用户名/密码即可。如果您使用用户令牌,则按Web API documentation:
这是推荐的方法。优惠在页面same documentation中描述。 令牌通过HTTP基本身份验证的登录字段发送,没有任何密码。