Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos en aula

Agregué la dependencia SpringDoc en el pom.xml para generar automáticamente la documentación basada en OpenAPI Specification.

Luego modifiqué el método securityFilterChain en la clase SecurityConfigurations para permitir el acceso a los endpoints /v3/api-docs y /swagger-ui, evitando que requieran autenticación.

Después creé la clase SpringDocConfiguration, donde configuré el esquema de seguridad tipo Bearer para poder enviar el token JWT desde la interfaz de Swagger UI.

Finalmente, agregué la anotación @SecurityRequirement(name = "bearer-key") en los controllers para indicar que los endpoints requieren autenticación.

1 respuesta

Hola Estudiante, espero que estés bien

Veo que has seguido los pasos para integrar SpringDoc en tu proyecto y configurar la seguridad con JWT. Parece que has hecho un buen trabajo al agregar la dependencia en el pom.xml, modificar el método securityFilterChain y crear la clase SpringDocConfiguration para manejar el esquema de seguridad.

Para asegurarte de que todo esté funcionando correctamente, aquí tienes un par de cosas que podrías verificar:

  1. Dependencia de SpringDoc: Asegúrate de que la versión de SpringDoc que estás utilizando sea compatible con tu versión de Spring Boot. Por ejemplo:

    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.6.9</version>
    </dependency>
    
  2. Configuración de Seguridad: Verifica que los endpoints /v3/api-docs y /swagger-ui estén correctamente configurados en tu método securityFilterChain para permitir el acceso sin autenticación. Un ejemplo podría ser:

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/v3/api-docs/**", "/swagger-ui/**").permitAll()
            .anyRequest().authenticated()
            .and()
            .oauth2ResourceServer().jwt();
        return http.build();
    }
    
  3. Configuración de SpringDoc: Asegúrate de que la clase SpringDocConfiguration esté correctamente configurada para manejar el esquema de seguridad. Aquí tienes un ejemplo básico:

    @Configuration
    public class SpringDocConfiguration {
        @Bean
        public OpenAPI customOpenAPI() {
            return new OpenAPI()
                .addSecurityItem(new SecurityRequirement().addList("bearer-key"))
                .components(new Components()
                    .addSecuritySchemes("bearer-key",
                        new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("bearer").bearerFormat("JWT")));
        }
    }
    
  4. Anotaciones en los Controllers: Verifica que la anotación @SecurityRequirement(name = "bearer-key") esté correctamente aplicada en tus controladores.

Si después de revisar estos puntos todo parece estar en orden, intenta acceder a la interfaz de Swagger UI para ver si la documentación se genera correctamente y si puedes autenticarte usando el token JWT.

Espero que estos consejos te sean útiles. ¡Espero haber ayudado y buenos estudios!