【问题标题】:HttpClientErrorException: 401 Unauthorized basic authenticationHttpClientErrorException: 401 未经授权的基本身份验证
【发布时间】:2017-05-31 12:50:55
【问题描述】:

我正在尝试通过基本身份验证获取网址。我设置了用户/密码,如下所示。相同的凭据正在邮递员中工作。

String RELATIVE_IDENTITY_URL  = "http://my_url/api/core/v3/people/email/abc@example.com";
    RestTemplate restTemplate;
    Credentials credentials;

    //1. Set credentials
    credentials = new UsernamePasswordCredentials("admin", "admin");

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials( AuthScope.ANY, credentials);

    //2. Bind credentialsProvider to httpClient
    HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
    httpClientBuilder.setDefaultCredentialsProvider(credsProvider);
    CloseableHttpClient httpClient = httpClientBuilder.build();

    HttpComponentsClientHttpRequestFactory factory = new  
            HttpComponentsClientHttpRequestFactory(httpClient);

    //3. create restTemplate
    restTemplate = new RestTemplate();
    restTemplate.setRequestFactory(factory);

    //4. restTemplate execute
    String url = RELATIVE_IDENTITY_URL;

    String xml = restTemplate.getForObject(url,String.class); 
    System.out.println("Done");

我认为凭据设置不正确。这里有什么问题。? 错误:

Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:667)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:620)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:580)
    at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:287)
    at com.src.AuthRestService.main(AuthRestService.java:85)    

【问题讨论】:

  • 当您发出请求时,您如何附加凭据以及设置身份验证标头?
  • @MikeTung:我只是错过了补充。我真的认为它会从上面的 Set credentials 部分中获取。当我通过标题设置它时它的工作。非常感谢

标签: java spring basic-authentication


【解决方案1】:

您缺少 auth 标头并在您的 REST 模板执行中设置凭据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2016-04-15
    • 2018-01-23
    相关资源
    最近更新 更多