【发布时间】:2017-05-08 19:39:44
【问题描述】:
我已将我的 Sonar 版本从 5.4迁移到 6.3.1。 在 5.4 版本中,Sonar 没有提供登录 API。 因此,我们在每个调用中添加了一个 Authorization 标头,其值为 Base64 编码的“用户名”:“密码”。
但在迁移到 6.3.1 后,当前实施的授权失败。
我们尝试将令牌(从 UI 生成)作为 Authorization 标头的值传递,但没有成功。
我们也尝试调用 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);
【问题讨论】:
-
您应该举例说明您尝试过的方法。建议先使用curl之类的简单工具。确保pass the token as username with empty password。
-
您好,我尝试了以下登录 API,我收到 HTTP 200 作为响应,表明登录成功。
-
但是在调用登录 API 之后,如果我在没有传递任何授权标头的情况下调用任何其他 API,那么它不会给我任何响应。如果我复制相同的 URI 并从浏览器调用它(登录后),那么它会给我正确的响应数据。