【问题标题】:Rest API authentication failure - Jenkins休息 API 身份验证失败 - 詹金斯
【发布时间】:2017-10-29 15:18:51
【问题描述】:

我在 8081 端口上安装了 Jeninkins,并设置了 admin 用户,用户名和密码为 'admin'

我在尝试调用 rest API 以获取使用 Java 客户端手动创建的作业列表时遇到以下错误

错误:“GET http://localhost:8081/api/xml 返回的响应状态为 401 Unauthorized”

您能否帮助解决用户身份验证问题。

我的 Java 客户端:

        String url = "http://localhost:8081/api/xml";
        String name = "admin";
        String password = "admin";
        String authString = name + ":" + password;
        String authStringEnc = new BASE64Encoder().encode(authString.getBytes());
        System.out.println("Base64 encoded auth string: " + authStringEnc);
        Client restClient = Client.create();
        WebResource webResource = restClient.resource(url);
        ClientResponse resp = webResource.accept("application/xml")
                                         .header("Authorization", "Basic " + authStringEnc)
                                         .get(ClientResponse.class);
        if(resp.getStatus() != 200){
            System.err.println("Unable to connect to the server");
        }
        String output = resp.getEntity(String.class);
        System.out.println("response: "+output);

【问题讨论】:

  • 401 错误,表示您有授权问题。检查您的 settings.xml 是否正确配置了 条目。

标签: java rest jenkins jersey


【解决方案1】:

我已经通过在 Jenkins url.PBF 中添加 API 令牌解决了这个问题,工作代码 sn-p

    String url ="http://<user name>:<apitoken for user>@localhost:8081/api/xml";
    String name = "admin";
    String password = "admin";
    String authString = name + ":" + password;
    String authStringEnc = new BASE64Encoder().encode(authString.getBytes());
    System.out.println("Base64 encoded auth string: " + authStringEnc);
    Client restClient = Client.create();
    WebResource webResource = restClient.resource(url);
    ClientResponse resp = webResource.accept("application/xml")
                                     .header("Authorization", "Basic " + authStringEnc)
                                     .get(ClientResponse.class);
    if(resp.getStatus() != 200){
        System.err.println("Unable to connect to the server");
    }
    String output = resp.getEntity(String.class);
    System.out.println("response: "+output);

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多