В моем приложении я использую Spring Security OAuth2 для обеспечения аутентификации на основе токенов JWT.По умолчанию конечная точка /oauth/token
защищена с использованием обычной HTTP-аутентификации client-id
и client-secret
.Эта конечная точка полностью работает должным образом.
Однако, когда я добавляю новую конечную точку на свой Сервер авторизации, я обнаружил, что она вообще не защищена.Другими словами, я могу вызвать конечную точку, не предоставляя базовую HTTP-аутентификацию и не предоставляя токен JWT Bearer.
Я попытался добавить @EnableResourceServer
в новый класс, расширяющий ResourceServerConfigurerAdapter
в том же проекте, как показано ниже, но это не помогло.не работаетЯ все еще могу вызывать мою новую конечную точку без предварительной аутентификации.
@EnableResourceServer
@Configuration
public class ResourcesServerConfiguration extends ResourceServerConfigurerAdapter {
@Autowired
private JwtAccessTokenConverter jwtAccessTokenConverter;
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception{
resources.tokenStore(new JwtTokenStore(jwtAccessTokenConverter));
}
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated();
}
}
Я также попытался добавить @EnableWebSecurity
в класс, расширяющий WebSecurityConfigurerAdapter, как показано ниже, но это не сработало.В этом случае я не могу получить доступ к новой конечной точке вообще.Независимо от того, предоставляю ли я базовую HTTP-аутентификацию или действительный токен на предъявителя JWT, я всегда получу 401 Unauthorized
.
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated();
}
}
Буду очень признателен, если вы укажете мне правильное направление.