Swagger + Spring security

  • Incluir anotação @SecurityScheme na classe de configuração

@OpenAPIDefinition
@Configuration
@SecurityScheme(name = "bearerAuth", type = SecuritySchemeType.HTTP, scheme = "bearer")
public class OpenApiConfig {

    @Bean
    public OpenAPI dsmovieAPI() {
        return new OpenAPI()
           .info(new Info()
           .title("DSMovie API")
           .description("DSMovie Reference Project")
           .version("v0.0.1")
           .license(new License()
           .name("Apache 2.0")
           .url("https://github.com/devsuperior/dsmovie-ref")));
    }
}

O nome que você define em "name" no @SecurityScheme, você deve reutilizar nos endpoints.

Incluir anotação @SecurityRequirement nos endpoints protegidos

@SecurityRequirement(name = "bearerAuth")
@DeleteMapping(value = "/{id}")
public ResponseEntity<MovieDTO> delete(@PathVariable Long id) {

Ao colocar isso, a requisição no Swagger ficará com um cadeado, e se colocarmos para executar, precisaremos fornecer um token (para isso é só logar no postman e copiar o token).

Atualizado