Définir JWT avec Spring Boot et Swagger UI

1. Introduction

Dans ce court didacticiel, nous allons voir comment configurer l'interface utilisateur Swagger pour inclure un jeton Web JSON (JWT) lorsqu'il appelle notre API.

2. Dépendances de Maven

Dans cet exemple, nous utiliserons springfox-boot-starter, qui inclut toutes les dépendances nécessaires pour commencer à travailler avec Swagger et Swagger UI. Ajoutons-le à notre fichier pom.xml :

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

3. Configuration Swagger

Tout d'abord, nous devons définir notre ApiKey pour inclure JWT comme en-tête d'autorisation:

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

Ensuite, configurons le JWT SecurityContext avec un AuthorizationScope global :

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)); }

Et puis, nous configurons notre bean API Docket pour inclure les informations API, les contextes de sécurité et les schémas de sécurité:

@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. Contrôleur REST

Dans notre ClientsRestController , écrivons un simple point de terminaison getClients pour renvoyer une liste de clients:

@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. Interface utilisateur Swagger

Maintenant, lorsque nous démarrons notre application, nous pouvons accéder à l'interface utilisateur de Swagger à l' adresse // localhost: 8080 / swagger-ui / URL.

Voici un aperçu de l'interface utilisateur Swagger avec le bouton Autoriser :

Lorsque nous cliquons sur le bouton Autoriser , Swagger UI demandera le JWT.

Il suffit de saisir notre token et de cliquer sur Authorize , et à partir de là, toutes les requêtes adressées à notre API contiendront automatiquement le token dans les en-têtes HTTP:

6. Demande d'API avec JWT

Lors de l'envoi de la demande à notre API, nous pouvons voir qu'il existe un en-tête «Authorization» avec notre valeur de jeton:

7. Conclusion

Dans cet article, nous avons vu comment Swagger UI fournit des configurations personnalisées pour configurer JWT, ce qui peut être utile lors de la gestion de notre autorisation d'application. Après autorisation dans Swagger UI, toutes les demandes incluront automatiquement notre JWT.

Le code source de cet article est disponible à l'adresse over sur GitHub.