Я использую весеннюю загрузку с keycloak для защиты моего приложения. Но у меня есть как обычный запрос веб-браузера (с использованием шаблона тимелеафа), так и запрос api rest (без браузера и метода в контроллере, аннотированного с помощью @ResponseBody в формате json).
Из веб-руководства я обнаружил, что keycloak будет использовать другой тип клиента для запроса браузера (например, общедоступный клиент) и без запроса пользовательского интерфейса (только для носителя), а сеанс в SecurityConfig.java отличается, new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl()) и new NullAuthenticatedSessionStrategy().
Итак, мой вопрос: как я могу настроить безопасность Spring и Keycloak как для поддержки запроса браузера, так и для запроса rest api в одном приложении?
Спасибо!




Наличие клиента bearer-only имеет смысл только тогда, когда у вас есть другой клиент для аутентификации. Вкратце, это три типа клиентов в Keycloak:
Сказав это, я не вижу смысла делать одно и то же приложение одновременно общедоступным и только на предъявителя. Как правило, вы создаете клиента для каждого приложения. Итак, у вас есть два варианта:
Для второго решения да, оно работает. Но поскольку мое приложение - это просто сервис (с простым пользовательским интерфейсом для тех, кто не отдыхает), я не хочу разделять его, если могу.
Что касается вашего первого комментария, вы можете использовать заголовок Authorization для публичных и конфиденциальных клиентов.
Привет @xtreme, как сделать запрос не из браузера для общедоступного клиента keycloak, для которого я должен установить заголовок HTTP-запроса. Я знаю только, если использую клиент-носитель, я могу использовать заголовок «Authetication» с действительным токеном посещения, но что мне делать с типом общедоступного клиента. Спасибо!