Saltar al contenido

Interfaz de usuario de Spring Boot Swagger: proteger el acceso a la interfaz de usuario

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *