Sett JWT med Spring Boot og Swagger UI
1. Introduksjon
I denne korte opplæringen skal vi se hvordan du konfigurerer Swagger UI for å inkludere et JSON Web Token (JWT) når det kaller API.
2. Maven-avhengigheter
I dette eksemplet bruker vi springfox-boot-starter, som inkluderer alle nødvendige avhengigheter for å begynne å jobbe med Swagger og Swagger UI. La oss legge det til vårt pom.xml fil:
org.springframework.boot spring-boot-starter-web io.springfox springfox-boot-starter 3.0.0
3. Swagger-konfigurasjon
Først må vi definere vår ApiKey å inkludere JWT som autorisasjonshode:
private ApiKey apiKey () {returner nye ApiKey ("JWT", "Authorization", "header"); }
Deretter la oss konfigurere JWT SecurityContext med en global AuthorizationScope:
private SecurityContext securityContext () {return SecurityContext.builder (). securityReferences (defaultAuth ()). build (); } privat liste defaultAuth () {AuthorizationScope autorisasjonScope = ny AuthorizationScope ("global", "accessEverything"); AuthorizationScope [] autorisasjonScopes = nytt AuthorizationScope [1]; autorisasjonSkop [0] = autorisasjonSkop; returnere Arrays.asList (ny SecurityReference ("JWT", autorisasjonScopes)); }
Og så konfigurerer vi API-en vår Docket bønne for å inkludere API-informasjon, sikkerhetskontekster og sikkerhetsskjemaer:
@Bean public Docket api () {return new Docket (DocumentationType.SWAGGER_2) .apiInfo (apiInfo ()) .securityContexts (Arrays.asList (securityContext ())) .securitySchemes (Arrays.asList (apiKey ())) .select (( ) .apis (RequestHandlerSelectors.any ()). stier (PathSelectors.any ()) .build (); }
private ApiInfo apiInfo () {returner nye ApiInfo ("My REST API", "Noe tilpasset beskrivelse av API.", "1.0", "Servicevilkår", ny kontakt ("Sallo Szrajbman", "www.baeldung.com" , "[email protected]"), "License of API", "API License URL", Collections.emptyList ()); }
4. REST-kontroller
I vår ClientsRestController, la oss skrive en enkel getClients endepunkt for å returnere en liste over klienter:
@RestController (value = "/ clients") @Api (tags = "Clients") public class ClientsRestController {@ApiOperation (value = "Denne metoden brukes for å få klientene.") @GetMapping offentlig Liste getClients () {retur Arrays .asList ("First Client", "Second Client"); }}
5. Swagger UI
Nå, når vi starter søknaden vår, kan vi få tilgang til Swagger UI på // localhost: 8080 / swagger-ui / URL.
Her er en titt på Swagger UI med Autorisere knapp:
Når vi klikker på Autorisere -knappen, vil Swagger UI be om JWT.
Vi trenger bare å legge inn token og klikke på Autorisere, og fra da av vil alle forespørslene til API-et vårt automatisk inneholde token i HTTP-overskriftene:
6. API-forespørsel med JWT
Når du sender forespørselen til API-et vårt, kan vi se at det er en “Autorisasjon” -hode med tokenverdien vår:
7. Konklusjon
I denne artikkelen så vi hvordan Swagger UI tilbyr tilpassede konfigurasjoner for å konfigurere JWT, noe som kan være nyttig når vi behandler søknadsautorisasjonen vår. Etter godkjenning i Swagger UI vil alle forespørslene automatisk inkludere vår JWT.
Kildekoden i denne artikkelen er tilgjengelig på GitHub.