Задайте JWT с Spring Boot и Swagger UI

1. Въведение

В този кратък урок ще видим как да конфигурираме Swagger UI да включва JSON Web Token (JWT), когато извиква нашия API.

2. Зависимости на Maven

В този пример ще използваме springfox-boot-starter, който включва всички необходими зависимости, за да започнем да работим с Swagger и Swagger UI. Нека го добавим към нашия файл pom.xml :

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

3. Конфигурация на Swagger

Първо, трябва да дефинираме нашия ApiKey, за да включим JWT като заглавие за оторизация:

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

След това нека конфигурираме JWT SecurityContext с глобален AuthorizationScope :

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

И след това конфигурираме нашия API Docket bean да включва информация за API, контексти на защитата и схеми за защита:

@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. REST контролер

В нашия ClientsRestController , нека напишем проста крайна точка getClients, за да върнем списък с клиенти:

@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

Сега, когато стартираме нашето приложение, можем да осъществим достъп до потребителския интерфейс на Swagger на // localhost: 8080 / swagger-ui / URL.

Ето поглед към потребителския интерфейс на Swagger с бутон Authorize :

Когато щракнем върху бутона Authorize , потребителският интерфейс на Swagger ще поиска JWT.

Просто трябва да въведем нашия токен и да кликнете върху Authorize и оттам насетне всички заявки, направени към нашия API, автоматично ще съдържат маркера в HTTP заглавията:

6. API заявка с JWT

Когато изпращаме заявката до нашия API, можем да видим, че има заглавка „Упълномощаване“ с нашата стойност на маркера:

7. Заключение

В тази статия видяхме как потребителският интерфейс на Swagger предоставя персонализирани конфигурации за настройка на JWT, което може да бъде полезно при работа с нашето оторизиране на приложението. След разрешаване в потребителския интерфейс на Swagger, всички заявки автоматично ще включват нашия JWT.

Изходният код в тази статия е достъпен в GitHub.