Разрешить анонимный доступ к springdoc-openapi-ui с помощью Spring Security
Как разрешить анонимный доступ к springdoc-openapi-ui (OpenAPI 3.0/swagger-ui.html
) в приложении Spring Boot, защищенном Spring Security?
3 ответа
Чтобы использовать springdoc-openapi-ui /swagger-ui.html
, разрешите анонимный доступ к следующим конечным точкам в WebSecurityConfigurerAdapter
с помощью permitAll
метод:
/v3/api-docs/**
/swagger-ui/**
/swagger-ui.html
Пример:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.
.authorizeRequests()
.antMatchers("/v3/api-docs/**", "/swagger-ui/**", "/swagger-ui.html").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic(); //or anything else, e.g. .oauth2ResourceServer().jwt()
}
}
Убедитесь, что у проекта есть следующие зависимости:
Для получения доступа в spring webflux вам необходимо сделать следующее, проверенное с помощью spring-doc версии 1.5.2:
Веб-страница swagger не работала с html-ресурсами с путем
/webjars/swagger-ui
.
@Configuration
@EnableWebFluxSecurity
public class WebSecurityConfig {
@Bean
SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
return http.
.authorizeExchange()
.pathMatchers(
"/v3/api-docs/**", "/swagger-ui/**", "/swagger-ui.html", "/webjars/swagger-ui/**")
.permitAll()
.anyExchange()
.authenticated()
.and()
.build();
}
}
В дополнение к ответу Евгения я бы добавил правильную конфигурацию, чтобы избежать конфликтов с извлечением документов, используемым в пользовательском интерфейсе Swagger (например, js, html, изображения и другие файлы), а также в классе SecurityConfig, например:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//Other configuration methods
@Override
public void configure(WebSecurity web) {
web.ignoring()
.antMatchers("/v3/api-docs/**", "/swagger-ui/**");
}
}
Без этой конфигурации, даже если пользовательский интерфейс выглядит так, как будто он загружен,
401: Unauthorized
могут возникнуть фоновые вызовы при загрузке вышеупомянутых файлов.