Я использую keycloak-jaxrs-oauth-client для защиты моего REST API с помощью Keycloak. Предыдущая версия была самодельной защитой с сохранением статуса аутентификации в сеансе Java.
Фильтру требуется токен Authorization: Bearer, который необходимо обрабатывать в Javascript, выполняя вызовы REST API, вплоть до того места, где это больше невозможно: JAX-RS REST API предоставляет методы, которые используются как классические запросы GET в браузере: URL-адреса для загрузки ресурсы, пользовательские картинки из БД и т. д.
AFAIK невозможно заставить браузер добавлять пользовательские заголовки к таким запросам. Так что отказ от классического подхода к файлам cookie был бы решением.
Есть ли параметр или оболочка, которая сообщает keycloak-jaxrs-oauth-client использовать cookie, когда заголовок Authorization отсутствует? Мне не удалось найти такое место в исходном коде этой библиотеки, но, может быть, я просто использую неправильную реализацию для фильтра JAX-RS? Сейчас я использую org.keycloak.jaxrs.JaxrsBearerTokenFilterImpl.





Самостоятельный ответ:
TL; DR: Нет, нужно DYI
Нет, это невозможно в текущей (4.0.0) версии библиотеки keycloak, потому что org.keycloak.jaxrs.JaxrsBearerTokenFilterImpl в методе filter создает экземпляр org.keycloak.adapters.BearerTokenRequestAuthenticator, который ищет только HTTP-заголовок Authorization.
Использование другой стратегии потребует настройки этой части, но такой подготовки нет.
Итак, на данный момент единственным способом использования файлов cookie, похоже, является DYI (который требует перегрузки метода filter и замены org.keycloak.adapters.BearerTokenRequestAuthenticator на собственный класс).