Intenta entender el código de forma correcta previamente a utilizarlo a tu trabajo y si ttienes algo que aportar puedes dejarlo en los comentarios.
Solución:
Los documentos de Swagger estarán disponibles en /v2/api-docs punto final cuando swagger está integrado con la aplicación Spring Boot.
Para proteger el recurso, utilice Spring Security y restrinja el punto final para acceder a los documentos.
org.springframework.boot
spring-boot-starter-security
Configuración de seguridad : restringir el acceso al punto final solo a los usuarios
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
@Override
protected void configure(HttpSecurity http) throws Exception
http
.authorizeRequests()
.antMatchers("/v2/api-docs").authenticated()
.and()
.httpBasic();
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
Además, swagger-ui.html también se puede proteger según el requisito.
Aquí hay una solución alternativa. Se trata de limitar el acceso a Swagger solo en el entorno de desarrollo/control de calidad. El entorno de producción no tendrá acceso a Swagger. Estoy usando una propiedad (prop.swagger.enabled
) como un indicador para omitir la autenticación de seguridad de primavera para swagger-ui solo en el entorno de desarrollo/control de calidad.
@Configuration
@EnableSwagger2
public class SwaggerConfiguration extends WebSecurityConfigurerAdapter implements WebMvcConfigurer
@Value("$prop.swagger.enabled:false")
private boolean enableSwagger;
@Bean
public Docket SwaggerConfig()
return new Docket(DocumentationType.SWAGGER_2)
.enable(enableSwagger)
.select()
.apis(RequestHandlerSelectors.basePackage("com.your.controller"))
.paths(PathSelectors.any())
.build();
@Override
public void configure(WebSecurity web) throws Exception
if (enableSwagger)
web.ignoring().antMatchers("/v2/api-docs",
"/configuration/ui",
"/swagger-resources/**",
"/configuration/security",
"/swagger-ui.html",
"/webjars/**");
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry)
if (enableSwagger)
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
No se te olvide comunicar esta crónica si si solucionó tu problema.