11

如何在受 Spring Security 保护的 Spring Boot 应用程序中允许匿名访问springdoc-openapi-ui (OpenAPI 3.0 )?/swagger-ui.html

4

3 回答 3

14

要使用 springdoc-openapi-ui ,请在using方法/swagger-ui.html中允许匿名访问以下端点:WebSecurityConfigurerAdapterpermitAll

  • /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()
  }
}

确保项目具有以下依赖项:

于 2020-01-24T14:27:46.630 回答
1

除了 Evgeniy 的回答之外,我还要添加正确的配置以避免与 Swagger 的 UI(如 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/**");
   }
}

如果没有此配置,即使 UI 看起来像是已加载,但401: Unauthorized在加载上述文件时,后台调用可能会出现 a。

于 2020-09-10T15:27:43.920 回答
1

要在 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();
  }
}
于 2020-12-23T15:57:02.593 回答