Imposta JWT con Spring Boot e Swagger UI

1. Introduzione

In questo breve tutorial, vedremo come configurare Swagger UI per includere un JSON Web Token (JWT) quando chiama la nostra API.

2. Dipendenze di Maven

In questo esempio, utilizzeremo springfox-boot-starter, che include tutte le dipendenze necessarie per iniziare a lavorare con Swagger e Swagger UI. Aggiungiamolo al nostro file pom.xml :

 org.springframework.boot spring-boot-starter-web   io.springfox springfox-boot-starter 3.0.0 

3. Configurazione Swagger

Innanzitutto, dobbiamo definire la nostra ApiKey per includere JWT come intestazione di autorizzazione:

private ApiKey apiKey() { return new ApiKey("JWT", "Authorization", "header"); }

Successivamente, configuriamo JWT SecurityContext con un AuthorizationScope globale :

private SecurityContext securityContext() { return SecurityContext.builder().securityReferences(defaultAuth()).build(); } private List defaultAuth() { AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; return Arrays.asList(new SecurityReference("JWT", authorizationScopes)); }

Quindi, configuriamo il nostro bean API Docket per includere informazioni API, contesti di sicurezza e schemi di sicurezza:

@Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .securityContexts(Arrays.asList(securityContext())) .securitySchemes(Arrays.asList(apiKey())) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); } 
private ApiInfo apiInfo() { return new ApiInfo( "My REST API", "Some custom description of API.", "1.0", "Terms of service", new Contact("Sallo Szrajbman", "www.baeldung.com", "[email protected]"), "License of API", "API license URL", Collections.emptyList()); }

4. Controller REST

Nel nostro ClientsRestController , scriviamo un semplice endpoint getClients per restituire un elenco di client:

@RestController(value = "/clients") @Api( tags = "Clients") public class ClientsRestController { @ApiOperation(value = "This method is used to get the clients.") @GetMapping public List getClients() { return Arrays.asList("First Client", "Second Client"); } }

5. Swagger UI

Ora, quando avviamo la nostra applicazione, possiamo accedere all'interfaccia utente di Swagger in // localhost: 8080 / swagger-ui / URL.

Ecco uno sguardo all'interfaccia utente di Swagger con il pulsante Autorizza :

Quando facciamo clic sul pulsante Autorizza , Swagger UI chiederà il JWT.

Dobbiamo solo inserire il nostro token e fare clic su Autorizza , e da quel momento in poi, tutte le richieste fatte alla nostra API conterranno automaticamente il token nelle intestazioni HTTP:

6. Richiesta API con JWT

Quando si invia la richiesta alla nostra API, possiamo vedere che c'è un'intestazione "Autorizzazione" con il nostro valore di token:

7. Conclusione

In questo articolo, abbiamo visto come Swagger UI fornisce configurazioni personalizzate per impostare JWT, che possono essere utili quando si ha a che fare con l'autorizzazione della nostra applicazione. Dopo l'autorizzazione nell'interfaccia utente di Swagger, tutte le richieste includeranno automaticamente il nostro JWT.

Il codice sorgente in questo articolo è disponibile su GitHub.