У меня есть AuthorizationServer и ResourceServer, настроенные с помощью Spring-Boot, я зарегистрировал двух фиктивных клиентов, используя уникальный идентификатор клиента и секретный ключ в таблицах oauth_client_details. Я настроил один из этих клиентов в ResourceServer, предоставив идентификатор клиента и client-secret. Затем я сгенерировал токен, используя другой ключ и секрет, и отправил запрос API с токеном носителя, и он вернул успех, который не является ожидаемым. Мне нужно разрешить отправлять запрос с токенами, сгенерированными клиентским ключом приложения и секретом. Не удалось найти что-нибудь в inte rnet по этому поводу, ваша помощь приветствуется.
Ниже приведен код для сервера авторизации
@Configuration
public class AuthorizationServerConfiguration implements AuthorizationServerConfigurer {
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private DataSource dataSource;
@Autowired
private AuthenticationManager authenticationManager;
@Bean
TokenStore jdbcTokenStore() {
return new JdbcTokenStore(dataSource);
}
@Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
security.checkTokenAccess("isAuthenticated()").tokenKeyAccess("permitAll()");
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.jdbc(dataSource).passwordEncoder(passwordEncoder);
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.tokenStore(jdbcTokenStore());
endpoints.authenticationManager(authenticationManager);
}
}
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Bean
protected AuthenticationManager getAuthenticationManager() throws Exception {
return super.authenticationManagerBean();
}
@Bean
PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
}
На сервере ресурсов, который я включил @EnableResourceServer и добавил соответствующие конфиги безопасности в файле application.yml
security:
oauth2:
resource:
token-info-uri: http://localhost:9191/oauth/check_token
client:
client-id: mobile
client-secret: pin
Обратите внимание, что я сгенерировал токен, используя другой зарегистрированный клиентский ключ и секрет, но все же могу успешно вызвать вышеуказанный сервер ресурсов, используя этот знак.
Спасибо, Раджит