У меня развернуто приложение 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
});
});
}]);
РЕДАКТИРОВАТЬ: Заголовки запроса