Stel JWT in met Spring Boot en Swagger UI

1. Inleiding

In deze korte tutorial gaan we zien hoe we Swagger UI kunnen configureren om een ​​JSON Web Token (JWT) op te nemen wanneer het onze API aanroept.

2. Maven afhankelijkheden

In dit voorbeeld gebruiken we springfox-boot-starter, die alle benodigde afhankelijkheden bevat om met Swagger en Swagger UI te gaan werken. Laten we het toevoegen aan ons pom.xml het dossier:

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

3. Swagger-configuratie

Eerst moeten we onze API sleutel om JWT op te nemen als autorisatiekop:

private ApiKey apiKey () {retourneer nieuwe ApiKey ("JWT", "Autorisatie", "header"); }

Laten we vervolgens de JWT configureren SecurityContext met een globaal AuthorizationScope:

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

En dan configureren we onze API Docket bean om API-informatie, beveiligingscontexten en beveiligingsschema's op te nemen:

@Bean public Docket api () {retourneer nieuwe 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 () {retourneer nieuwe ApiInfo ("My REST API", "Some custom description of API.", "1.0", "Servicevoorwaarden", nieuw contact ("Sallo Szrajbman", "www.baeldung.com" , "[email protected]"), "Licentie van API", "API licentie URL", Collections.emptyList ()); }

4. REST-controller

In onze ClientsRestController, laten we een simpel schrijven getClients eindpunt om een ​​lijst met clients te retourneren:

@RestController (waarde = "/ clients") @Api (tags = "Clients") openbare klasse ClientsRestController {@ApiOperation (waarde = "Deze methode wordt gebruikt om de clients op te halen.") @GetMapping openbare lijst getClients () {return Arrays .asList ("Eerste klant", "Tweede klant"); }}

5. Swagger UI

Nu, wanneer we onze applicatie starten, hebben we toegang tot de Swagger UI op het // localhost: 8080 / swagger-ui / URL.

Hier is een blik op de gebruikersinterface van Swagger met Toestemming geven knop:

Als we op het Toestemming geven knop, zal Swagger UI om de JWT vragen.

We hoeven alleen ons token in te voeren en op te klikken Toestemming geven, en vanaf dat moment bevatten alle verzoeken aan onze API automatisch het token in de HTTP-headers:

6. API-aanvraag met JWT

Wanneer we het verzoek naar onze API sturen, kunnen we zien dat er een "Autorisatie" -header is met onze tokenwaarde:

7. Conclusie

In dit artikel hebben we gezien hoe Swagger UI aangepaste configuraties biedt om JWT in te stellen, wat handig kan zijn bij het afhandelen van onze applicatie-autorisatie. Na autorisatie in Swagger UI, zullen alle verzoeken automatisch onze JWT bevatten.

De broncode in dit artikel is beschikbaar op GitHub.