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:
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>
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();
}
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")));
}
}
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!