Как передать токен авторизации из веб-приложения в службу отдыха - PullRequest
0 голосов
/ 08 октября 2018

У меня развернуто приложение JS в Jetty.Я включил защиту Keycloak, установив обработчик безопасности на Jetty WebAppContext

WebAppContext wac = null;

String webAppPath = "/../../server/webapp/mywebapp";            
wac = new WebAppContext(webAppPath, "/mywebapp");
wac.addFilter(GzipFilter.class, "/*", EnumSet.allOf(DispatcherType.class));
wac.setParentLoaderPriority(true);
context.setSecurityHandler(keycloakSecurity);

Когда я получаю доступ к вышеупомянутому URL-адресу веб-приложения, поток работает нормально, меня просят об аутентификации и при успешной аутентификации, я перенаправлен в веб-приложение,Однако любые остальные вызовы, которые это веб-приложение (вызовы ajax) делает на сервер (которые также защищены с помощью keycloak), являются несанкционированными (401).

Нужно ли явно указывать заголовки авторизации в вызовах ajax или достаточно включить обработчик безопасности в WebAppContext, и мне не хватает некоторых настроек?

(Остальные вызовыдоступны, если я отправляю токен непосредственно им, но не через вышеуказанное веб-приложение автоматически)

В угловом JS я использую RestAngular так:

app.factory('DesignVaultRestangular', ['Restangular', '$location', function(Restangular, $location) {
  var url = baseURL;
  var location = $location.search();
  if (location && location.url)
    url = location.url;
  url = url + '/api/secured/';
  return Restangular.withConfig(function(RestangularConfigurer) {
    RestangularConfigurer.setBaseUrl(url);
    RestangularConfigurer.setDefaultHeaders({
      'Content-Type': 'application/json',
      'withCredentials': true
    });
  });
}]);

РЕДАКТИРОВАТЬ: Заголовки запроса

enter image description here

1 Ответ

0 голосов
/ 21 октября 2018

Заголовки авторизации требуются при доступе через URL-адрес или с помощью ajax-вызова.

Вы можете передать заголовки авторизации HTTP в формате, указанном ниже, вместе с вашим запросом.Различные API и инструменты имеют разные способы установки заголовков HTTP.

     Authorization: <authorization scheme>  < authorization parameters >

Обратите внимание, что учетные данные установлены в соответствии с требованиями ниже.Вам нужно изменить его, если он не требуется 'withCredentials': true

...