Ответ 1
При настройке сервера auh::
Создайте новый clientDetails в ClientDetailsServiceConfigurer
для сервера ресурсов. который будет использоваться для настройки RemoteTokenService
.
Настроить Spring Безопасность OAuth2 на сервере ресурсов:
Создайте класс, который аннотируется с помощью @EnableWebSecurity
, @Configuration
и расширяет WebSecurityConfigurerAdapter
.
@Configuration
@EnableWebSecurity
protected static class ResourceConfiguration extends WebSecurityConfigurerAdapter {
// methods
}
Создайте метод с @ Bean аннотированным, который вернет экземпляр TokenService
, который будет использоваться для создания AuthenticationManager
.
В этом методе создайте экземпляр RemoteTokenService
и установите clientId, client_secret, checkTokenEndpointUrl и DefaultAccessTokenConverterWithClientRoles
(этот класс является нашей реализацией, чтобы получить client_authority при аутентификации accessToken на сервере OAuth2.)
@Bean
public ResourceServerTokenServices tokenService() {
RemoteTokenServices tokenServices = new RemoteTokenServices();
tokenServices.setClientId("resource_id");
tokenServices.setClientSecret("resource_secret");
tokenServices.setCheckTokenEndpointUrl("http://<server-url>: <port>/oauth/check_token");
return tokenServices;
}
Переопределите метод authenticationManagerBean()
и аннотируйте его с помощью @Bean
и верните экземпляр OAuth2AuthenticationManager
с TokenService
.
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {
OAuth2AuthenticationManager authenticationManager = new OAuth2AuthenticationManager();
authenticationManager.setTokenServices(tokenService());
return authenticationManager;
}
Создайте класс, аннотированный с помощью @EnableResourceServer
, @Configuration
и продолжите ResourceServerConfigurerAdapter
.
@Configuration
@EnableResourceServer
protected static class ResourceServerConfig extends ResourceServerConfigurerAdapter {
// Mehotds
}
Переопределить методы настройки - это суперкласс для настройки сервера ресурсов. Различные настройки для настройки сервера ресурсов.
ResourceServerSecurityConfigurer: для настройки Resource_id.
HttpSecurity. Это позволит настроить фильтр безопасности, чтобы сообщить, что пользователю требуется аутентификация для защищенных URL-адресов (API).
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
resources.resourceId("resource_id");
}
@Override
public void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.authorizeRequests()
.antMatchers("/**").authenticated()
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
// @formatter:on
}
.antMatcher("/**").authenticated()
эта строка будет защищать каждый URL вашего сервера ресурсов.
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
не будет создавать сеанс.
PS:: Если что-то не так, скажите мне.