В моем аутентифицированном API JWT я хочу, чтобы эти пути были доступны без какой-либо аутентификации, а все другие конечные точки запрещены / отключены:
- GET / apis / id / {id}
- POST / apis
- PATCH / apis / id / {id}
- DELETE / apis / id / {id}
- GET /swagger-ui.html
Как видно, большинство вышеуказанных конечных точек начинаются с /apis/id
, POST имеет /apis
.Вот мои конфигурации:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.authorizeRequests()
.mvcMatchers(HttpMethod.GET,"/apis/id/**").permitAll()
.mvcMatchers(HttpMethod.PATCH,"/apis/id/**").permitAll()
.mvcMatchers(HttpMethod.DELETE,"/apis/id/**").permitAll()
.mvcMatchers(HttpMethod.POST,"/apis", "/apis/").permitAll()
.antMatchers(HttpMethod.GET,"/csrf","/v2/api-docs","/swagger-resources/configuration/ui", "/configuration/ui", "/swagger-resources", "/configuration/security", "/swagger-ui.html", "/webjars/**","/swagger-resources/configuration/ui","/swagger-resources/configuration/security", "/configuration/security").permitAll()// for Swagger UI
.anyRequest().denyAll();
}
}
Только GET /apis/id/{id}
и /swagger-ui.html
проходят.Все остальные конечные точки с одинаковыми конфигами (кроме POST) были отклонены (403).Я добавил обработчик исключений и распечатал сообщение AuthenticationException
, в котором говорится:
Для доступа к этому пути к ресурсу требуется полная аутентификация
Как сделать этоконечные точки публики?Я чувствую, что мне не хватает некоторых конфигураций.
Я использую Framworks:
- Версия Spring Boot 2.0.4
- Версия Spring Security 5.1.0