У меня есть 2 клиента, и я хочу, чтобы у них была другая логика аутентификации, одна для корпоративных клиентов, а другая для частных клиентов.Это означает, что SampleClientId
должен идти и аутентифицировать пользователя, используя datasource1
, а OTTAppId
клиент должен идти и аутентифицировать пользователя, используя datasource2
.Как я могу сделать это с помощью Spring Security?Мне не удалось найти какую-либо логику, в которой я могу установить различные службы userDetails для обеспечения безопасности пружин.
Я думал о предоставлении заголовка в запросе, чтобы определить, какой тип пользователя выполняет запрос.Предоставив authenticationFilters
и authenticationProviders
для пружины, я смогу достичь этого, но я хочу знать, есть ли способ иметь некоторую логику для clientId
, чтобы определить, какой userDetailsService
следует использовать.
@Override
public void configure(final ClientDetailsServiceConfigurer clients)
throws Exception {
clients.inMemory()
.withClient("SampleClientId")
.secret(passwordEncoder.encode("secret"))
.authorizedGrantTypes( "password", "authorization_code", "refresh_token", "implicit")
.scopes( "user_info","read", "write", "trust")
.autoApprove(true)
.accessTokenValiditySeconds(3600)// 1 hour
.refreshTokenValiditySeconds(3600*24*10)// 10 day
.and()
.withClient("OTTAppId")
.secret(passwordEncoder.encode("secret1"))
.authorizedGrantTypes( "password", "authorization_code", "refresh_token", "implicit")
.scopes("user_info","read", "write", "trust")
.autoApprove(true)