Какой класс / метод в Spring Security обрабатывает перенаправление на /oauth2 /authorization /{RegistrationID}? Необходимо переопределить для контейнера

#java #spring #spring-boot #spring-security #spring-security-oauth2

#java #spring #spring-boot #spring-security #spring-security-oauth2

Вопрос:

Мы развертываем наш API в контейнере docker за шлюзом. Все, что находится за шлюзом, является http, а не https. В результате, когда Spring Security пытается перенаправить пользователя на Uri авторизации, он делает это на http, который выдает 404. (потому что, когда перенаправление попадает в браузер пользователя, браузер не может найти его по http, только по https)

Я не смог найти, где происходит это перенаправление. Например, если пользователь переходит на https://thecompany.com/securedpage , и Spring Security видит, что он не аутентифицирован (нет JWT), некоторый код затем перенаправит на /oauth2/authorization/{regsitrationId} .

Я нашел, где выполняется разрешение ( OAuth2AuthorizationRequestRedirectWebFilter.filter(ServerWebExchange exchange, WebFilterChain chain) но, похоже, я не могу найти, где происходит перенаправление. Я прошел весь путь по цепочке файлов безопасности, но даже в последнем из них в ответе на перенаправление не было заголовка, равно как и статуса 302 .

Как я могу переопределить перенаправление для принудительного применения https?

Комментарии:

1. Какой шлюз вы используете? Эту проблему должен решить шлюз, а не сервер приложений.

2. Используете ли вы WebFlux?

3. @NatFar да, я использую webflux

Ответ №1:

Вы следовали главе «Настройка прокси-сервера» из документации spring security для настройки вашего шлюза?

Вам необходимо уведомить ваше приложение об этой конфигурации (https -> gateway -> http -> your_app), установив заголовки X-Forwarded и настроив ForwardedHeaderFilter в вашем приложении