Мы нашли хорошее решение этой проблемы, которое я собираюсь объяснить шаг за шагом:
Прежде всего, если вы хотите использовать пользовательскую страницу входа, у вас есть два варианта:
1. Изменение существующей темы keycloak, такой как login / registration / passwordupdate, которую можно найти в каталоге / keycloak / themes / *
2. Это может быть немного сложно - этого можно добиться, изменив AuthenticationProvider в Spring Security в вашем проекте.
override fun configure(http: HttpSecurity?) {
http
?.authorizeRequests()
?.antMatchers("/**")?.authenticated()
?.and()
?.authenticationProvider(myAuthenticationProvider)
?.formLogin()
?.loginPage("/login")
?.successHandler { request, response, authentication -> redirectStrategy.sendRedirect(request, response, "/main")}
?.permitAll()
?.usernameParameter("username") //the username parameter in the queryString, default is 'username'
?.passwordParameter("password") //the password parameter in the queryString, default is 'password'
?.and()
?.logout()
?.logoutUrl("/logout") //the URL on which the clients should post if they want to logout
?.invalidateHttpSession(true)
?.and()
?.exceptionHandling()
}
MyAuthenticationProvider вы должны переопределить этот весенний класс безопасности
Еще одна вещь, которую я задал в предыдущем вопросе: что если я использую rest api для доступа к проекту Spring, в этом случае вам следует реализовать KeycloakWebSecurityConfigurerAdapter вместо WebSecurityConfigurerAdapter