У нас есть старое приложение Spring (A) (которое не использует spring-boot), которое обрабатывает аутентификацию и записывает сеанс в Redis, используя spring-session (данные в Redis хранятся как XML).
Теперь мы хотим представить новое приложение (B), использующее spring-boot 2.2.6.RELEASE
и spring-session Corn-RC1
, которое должно использоваться, если пользователь вошел в (A) с помощью ROLE_ADMIN
. Т.е. это можно рассматривать как очень грубый способ сделать единый вход. Пользователь должен никогда иметь возможность аутентификации в B (он хотел бы отключить аутентификацию, если это возможно), он должен только проверять, что существующий пользователь аутентифицирован в репозитории сеансов (redis) и имеет ROLE_ADMIN
, И A, и B будут находиться в одном домене, поэтому файлы cookie будут распространяться браузером. Я пробовал разные способы заставить это работать, например:
@Configuration
@EnableWebSecurity
class ServiceBSpringSecurityConfig : WebSecurityConfigurerAdapter() {
@Autowired
fun configureGlobal(auth: AuthenticationManagerBuilder) {
auth.inMemoryAuthentication()
}
override fun configure(http: HttpSecurity) {
http
.authorizeRequests()
.anyRequest().hasRole("ADMIN")
.and()
.formLogin()
.and()
.httpBasic().disable()
}
}
, но при этом отобразится экран входа по умолчанию:
Я также попытался полностью удалить эту часть:
@Autowired
fun configureGlobal(auth: AuthenticationManagerBuilder) {
auth.inMemoryAuthentication()
}
, но тогда он сгенерирует пароль по умолчанию user
и пароль, и он, кажется, не вызывает метод configure
( или конфигурация не работает независимо).
Как я могу решить эту проблему?