@gorbunkov
Максим, используя пример, реализовали вот такой класс:
@Configuration
open class BoretsOidcConfiguration {
@Bean
open fun claimsRolesMapper(
resourceRoleRepository: ResourceRoleRepository,
rowLevelRowRepository: RowLevelRoleRepository
): ClaimsRolesMapper = DefaultClaimsRolesMapper(resourceRoleRepository, rowLevelRowRepository)
@Bean
open fun oidcUserService(oidcUserMapper: MySynchronizingOidcUserMapper) = DefaultJmixOidcUserService(oidcUserMapper)
@EnableWebSecurity
@Order(JmixOrder.HIGHEST_PRECEDENCE + 100)
open class BoretsOAuth2LoginSecurityConfiguration : WebSecurityConfigurerAdapter() {
@Autowired
lateinit var jmixOidcUserService: JmixOidcUserService
@Autowired
lateinit var clientRegistrationRepository: ClientRegistrationRepository
override fun configure(httpSecurity: HttpSecurity) {
http.apply(SecurityConfigurers.uiSecurity())
.and()
.oauth2Login { configurer ->
configurer.userInfoEndpoint()
.oidcUserService(jmixOidcUserService)
.and()
.successHandler { request, response, auth ->
DefaultRedirectStrategy().sendRedirect(request, response, "/#main")
}
}
.logout { configurer ->
configurer.logoutSuccessHandler(oidcLogoutSuccessHandler())
}
http.csrf().disable()
}
private fun oidcLogoutSuccessHandler(): OidcClientInitiatedLogoutSuccessHandler {
val successHandler = OidcClientInitiatedLogoutSuccessHandler(clientRegistrationRepository)
successHandler.setPostLogoutRedirectUri("{baseUrl}")
return successHandler
}
}
}
И вроде бы все работает, но если попытаться разлогиниться и снова войти, то возникает получаем ошибку (не всегда):
Если пройти по ссылке, то произойдет вход в систему.
Может быть есть что-то я упускаю, а для вас на виду?