После обновления нашего сервера аутентификации с Spring Boot 1.5.13 до 2.1.3 он прекратил перенаправление после успешного входа в систему. Он пытается перезагрузить страницу / login сейчас. Я создал веб-сайт, прокси-сервер и службу аутентификации в GitHub, чтобы продемонстрировать проблему.
Для этого интеграционного теста создайте пространство PCF, которое включает реестр служб и следующие микро-службы:
- Пример Angular - Если вы обойдете прокси и перейдете к примеру Angular, проложите страницу загрузки. ПОПРОБУЙТЕ .
- Пример аутентификации - Если вы обойдете прокси-сервер и перейдете в корневой каталог сервера аутентификации, вы сможете войти в систему и получить доступ к защищенной странице. ПОПРОБУЙТЕ
- Пример прокси Zuul - Если вы попытаетесь получить доступ к угловому примеру через прокси, то вы не не попадут на угловой пример после входа в систему. ПОПРОБУЙТЕ ЕГО
Если вы пытаетесь получить доступ к корневому каталогу сервера аутентификации ¨ / ¨, защищенная страница загружается нормально, и модульные тесты работают нормально.
Вот конфигурация сервера аутентификации.
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.requestMatchers()
.antMatchers("/", "/login", "/oauth/authorize", "/oauth/confirm_access")
.and()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
// @formatter:on
}
}
Вот весь код для всех проектов:
Ожидаемый результат
- Пользователь пытается получить доступ к сайту Angular через прокси-сервер с поддержкой единого входа.
- Spring Security на прокси-сервере перенаправляет браузер пользователя на страницу входа в систему на сервере аутентификации.
- Пользователь входит и отправляет форму входа на сервер аутентификации.
- Сервер аутентификации создает токен JWT oauth2 и перенаправляет пользователя на первоначально запрошенный сайт Angular.
Фактические результаты
Сервер аутентификации перенаправляет пользователя обратно на страницу входа в систему.