Swagger - hou27/spring-boot-jwt-example GitHub Wiki
Apply SecurityOpenApi to specific groups through OpenApiCustomizer
@Configuration
public class SwaggerConfig {
@Bean
public GroupedOpenApi securityApi() {
return GroupedOpenApi.builder()
.group("authentication is required")
.pathsToMatch("/user/profile")
.addOpenApiCustomiser(buildSecurityOpenApi())
.build();
}
@Bean
public GroupedOpenApi nonSecurityApi() {
return GroupedOpenApi.builder()
.group("authentication isn't required")
.pathsToExclude("/user/profile")
.build();
}
public OpenApiCustomiser buildSecurityOpenApi() {
// jwt token 설정 시 header에 값을 넣어줌
return OpenApi -> OpenApi.addSecurityItem(new SecurityRequirement().addList("jwt access token"))
.getComponents().addSecuritySchemes("jwt access token", new SecurityScheme()
.name("Authorization")
.type(SecurityScheme.Type.HTTP)
.in(SecurityScheme.In.HEADER)
.bearerFormat("JWT")
.scheme("bearer"));
}
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.components(new Components())
.info(new Info().title("Spring Boot API Example")
.description("Spring Boot API 예시 프로젝트입니다.")
.version("v0.0.1"));
}
}
OpenApiCustomizer
를 사용하여
인증 정보가 필요한(JWT Token이 필요한) API를 모아둔 GroupedOpenApi
에만
Authorization 정보를 설정할 수 있는 SecurityOpenApi를 적용해주었다.