Конфигурация безопасности Spring
@Bean
public SecurityWebFilterChain securityWebFilterChainBean(ServerHttpSecurity httpSecurity) {
httpSecurity.authorizeExchange()
.pathMatchers("/v2/api-docs").permitAll()
.pathMatchers("/configuration/ui").permitAll()
.pathMatchers("/swagger-resources/**").permitAll()
.pathMatchers("/configuration/security").permitAll()
.pathMatchers("/swagger-ui.html").permitAll()
.pathMatchers("/webjars/**").permitAll()
.pathMatchers("/v2/**").permitAll()
.anyExchange().authenticated();
return httpSecurity.build();
}
Контроллер отдыха
@RestController
public class MyController {
@PostMapping("myPath")
public MyResponse newLoansOffers(@RequestBody MyRequest request) {
return new MyResponse();
}
}
Конфигурация Spring fox:
@Bean
public Docket api() {
Class[] clazz = {AuthenticationPrincipal.class};
return new Docket(DocumentationType.SWAGGER_2)
.securitySchemes(Lists.newArrayList(apiKey()))
.select()
.paths(PathSelectors.any())
.build();
}
private ApiKey apiKey() {
return new ApiKey("xauth", "X-Auth-Token", "header");
}
В чем проблема?
Я нажимаю на кнопку авторизации:
и вводу действительного значения
Но когда я отправляю myPath
запрос от пользовательского интерфейса Swagger - заголовок X-Auth-Token
не передается с запросом.: (
Как я понимаю, Springfox не "учитывает" конфигурацию безопасности Spring во время генерации чванства:
- Есть ли способ сделать это?
- Еслинет, как сделать генерацию сваггера с добавленным заголовком авторизации только для частных конечных точек?