Ssylka

Интеграция Spring Cloud Gateway с Keycloak для веб-приложений

Spring Cloud Gateway, выступая в роли BFF (Backend for Frontend), обеспечивает безопасную аутентификацию и авторизацию для веб-приложений, перенося логику OAuth 2.0/OIDC на бэкенд. Вместо хранения токенов на фронтенде, токены access, refresh и id хранятся в http-сессии на стороне шлюза, а веб-приложение использует cookie для идентификации сессии. Такой подход делает шлюз приватным OAuth клиентом, что повышает безопасность.
Интеграция Spring Cloud Gateway с Keycloak для веб-приложений
Изображение носит иллюстративный характер

Для интеграции необходимы spring-boot-starter-oauth2-client, spring-cloud-starter-gateway, spring-session-data-redis, spring-session-core. Шлюз настраивается как OAuth2 клиент с использованием WebFlux spring security, обеспечивая поддержку PKCE для защиты. Для хранения OAuth2AuthorizedClient, объектов авторизации, используется WebSessionServerOAuth2AuthorizedClientRepository, который сохраняет их в веб-сессии. Разлогин реализован через OidcClientInitiatedServerLogoutSuccessHandler (для oidc) и DelegatingServerLogoutHandler, который удаляет SecurityContext, очищает сессию и удаляет cookie.

Конфигурация application.yaml включает настройки провайдера Keycloak, client-id, client-secret, тип авторизации и scopes. Шлюз добавляет фильтр TokenRelay для перенаправления запросов с access токеном на защищенные ресурсы, включая CORS настройки. Контроллеры AuthInfoController обеспечивают получение токенов access и id по cookie из сессии.

Защищенный ресурс, например тестовое приложение, настраивается как oauth2 ресурсный сервер, проверяющий JWT токены. После аутентификации через шлюз, запросы к защищенному ресурсу успешны, а сессии в keycloak регистрируются. Разлогин корректно удаляет сессию как на стороне шлюза, так и в keycloak, удаляя cookie. Важно правильно настроить время жизни сессии и рефреш токена и убедиться, что сессии keycloak и шлюза согласованы по времени жизни, чтобы исключить зависание сессий.


Новое на сайте

13509Что скрывает загадочный клад Мелсонби? 13508Может ли новый резервуар предотвратить наводнения? 13507Венеция: чудо из дерева, грязи и воды 13506Может ли купание под звёздами преобразить ваше восприятие мира? 13505Как распространение спортивной ходьбы трансформировало спортивную сферу в XIX столетии? 13504Защита критических данных с помощью PAM 13503Перестановка в «Малкольме»: новый Дьюи возрождает культовый сериал 13502Ошибочная декофеинизация: отзыв кофейного продукта в США 13501Как уличная фотография меняет модный мир? 13500Лучшее снаряжение для солнечного затмения 2025 13499Отмена тура FKA Twigs из-за визовых проблем 13498Как выбрать надежный трехрядный SUV за менее чем 30 000 долларов? 13497Как миф о превосходстве моногамии разрушается научными данными? 13496Любовный треугольник на южном побережье: как пара скопа справится с конкуренцией? 13495Революционное открытие: прото­планетные диски оказались значительно меньше, чем считалось...