Как получить доступ к Spring REST API в JHipster с помощью Spring RestTemplate

Я настроил JHipster, как описано на его домашней странице, с некоторыми объектами. Фронтенд с AngularJS отлично работает, а также страница API позволяет мне тестировать мои сервисы, как и ожидалось.

Теперь я пытаюсь написать REST-клиент, используя Spring RestTemplate следующим образом:

public List<SomeEntity> getAllEntities(){
     URI uri = URI.create("http://localhost:8080/api/entities");
     HttpHeaders httpHeaders = this.createHeaders("admin", "admin")
     ResponseEntity<SomeEntity[]> responseEntity =  restTemplate.exchange(uri, HttpMethod.GET, new HttpEntity<SomeEntity>(httpHeaders), SomeEntity[].class);
     return Arrays.asList(responseEntity.getBody());
}


private HttpHeaders createHeaders(final String username, final String password ){
HttpHeaders headers =  new HttpHeaders(){
      {
         String auth = username + ":" + password;
         byte[] encodedAuth = Base64.encode(
            auth.getBytes(Charset.forName("US-ASCII")) );
         String authHeader = "Basic " + new String( encodedAuth );
         set( "Authorization", authHeader );
      }
   };
   headers.add("Content-Type", "application/json");
   headers.add("Accept", "application/json");

   return headers;
}

Но это приводит к следующей ошибке: [WARN] org.springframework.web.client.RestTemplate — запрос GET для «http://localhost:8080/api/entities" в результате 401 (неавторизованный); вызов обработчика ошибок

Теперь я не уверен, нужно ли и как мне адаптировать мои HttpHeaders или мой простой подход к обработке базовой аутентификации вообще неверен.


person Tofferino    schedule 17.03.2015    source источник


Ответы (1)


Неправильный способ аутентификации, кажется, вы выбрали аутентификацию сеанса при создании своего приложения, поэтому для этого требуется аутентификация на основе формы, а не базовая аутентификация http, и для этого требуется возможность хранить cookie сеанса и cookie CSRF, поэтому, скорее всего, с помощью HTTP-клиента.

Возможно, было бы проще выбрать аутентификацию по токену xauth при создании приложения.

Как только вы заработаете, у вас возникнут проблемы с CORS, как только ваш клиент не будет работать на том же хосте, что и ваше приложение JHipster.

person Gaël Marziou    schedule 05.08.2015