박재우
8 months ago
2 changed files with 141 additions and 0 deletions
@ -0,0 +1,97 @@
|
||||
package kr.co.palnet.kac.app.config; |
||||
|
||||
import io.swagger.v3.oas.models.Components; |
||||
import io.swagger.v3.oas.models.OpenAPI; |
||||
import io.swagger.v3.oas.models.info.Info; |
||||
import io.swagger.v3.oas.models.security.SecurityRequirement; |
||||
import io.swagger.v3.oas.models.security.SecurityScheme; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.core.Ordered; |
||||
import org.springframework.web.cors.CorsConfiguration; |
||||
import org.springframework.web.cors.UrlBasedCorsConfigurationSource; |
||||
import org.springframework.web.filter.CorsFilter; |
||||
|
||||
import java.util.List; |
||||
|
||||
@Slf4j |
||||
@Configuration |
||||
public class SwaggerConfig { |
||||
|
||||
// @Bean
|
||||
// public Docket api() {
|
||||
// return new Docket(DocumentationType.OAS_30) // open api spec 3.0
|
||||
// .apiInfo(new ApiInfoBuilder().version("1.0").title("PAV").build())
|
||||
// .forCodeGeneration(true).securitySchemes(Arrays.asList(apiKey()))
|
||||
// .select()
|
||||
// .apis(RequestHandlerSelectors.any())
|
||||
// .paths(PathSelectors.any())
|
||||
// .build()
|
||||
// .apiInfo(apiInfo())
|
||||
// .directModelSubstitute(Date.class, String.class)
|
||||
// .directModelSubstitute(LocalDate.class, String.class)
|
||||
// .directModelSubstitute(LocalDateTime.class, String.class)
|
||||
// .directModelSubstitute(Pageable.class, SwaggerPageable.class)
|
||||
// .securityContexts(Arrays.asList(securityContext()))
|
||||
// .securitySchemes(Arrays.asList(apiKey()));
|
||||
// }
|
||||
//
|
||||
//
|
||||
// private ApiInfo apiInfo() {
|
||||
// return new ApiInfoBuilder()
|
||||
// .title("PAV API")
|
||||
// .description("----")
|
||||
// .version("1.0")
|
||||
// .build();
|
||||
// }
|
||||
//
|
||||
// //ApiKey 정의
|
||||
// private ApiKey apiKey() {
|
||||
// return new ApiKey("Authorization", "Authorization", "header");
|
||||
// }
|
||||
//
|
||||
// //JWT SecurityContext 구성
|
||||
// private SecurityContext securityContext() {
|
||||
// return SecurityContext.builder().securityReferences(defaultAuth()).build();
|
||||
// }
|
||||
//
|
||||
// private List<SecurityReference> defaultAuth() {
|
||||
// AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEveryThing");
|
||||
// AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
|
||||
// authorizationScopes[0] = authorizationScope;
|
||||
// return Arrays.asList(new SecurityReference("Authorization", authorizationScopes));
|
||||
// }
|
||||
|
||||
private static final String BEARER_TOKEN_PREFIX = "palnet"; |
||||
|
||||
@Bean |
||||
public OpenAPI openAPI() { |
||||
final String securitySchemeName = "BearerAuth"; |
||||
|
||||
SecurityRequirement securityRequirement = new SecurityRequirement().addList(securitySchemeName, List.of("read", "write")); |
||||
|
||||
Components components = new Components() |
||||
.addSecuritySchemes(securitySchemeName, new SecurityScheme() |
||||
.type(SecurityScheme.Type.APIKEY) |
||||
.in(SecurityScheme.In.HEADER) |
||||
.name("Authorization") |
||||
.description("prefix add 'palnet ' + token") |
||||
); |
||||
|
||||
// Swagger UI 접속 후, 딱 한 번만 accessToken을 입력해주면 모든 API에 토큰 인증 작업이 적용됩니다.
|
||||
return new OpenAPI() |
||||
.addSecurityItem(securityRequirement) |
||||
.components(components) |
||||
.info(new Info() |
||||
.title("PAV API") |
||||
.version("1.0") |
||||
.description("PAV API") |
||||
); |
||||
|
||||
} |
||||
|
||||
} |
||||
|
@ -0,0 +1,44 @@
|
||||
springdoc: |
||||
api-docs: |
||||
path: /api-docs |
||||
groups: |
||||
enabled: true |
||||
# 해당 패턴에 매칭되는 controller만 swagger-ui에 노출한다. |
||||
# paths-to-match: |
||||
# - /api/** |
||||
# paths-to-exclude: |
||||
# - /api/v1/utm |
||||
# - /api/bas/flight/** |
||||
# - /api/ctr/cntrl/contains |
||||
# - /api/file/** |
||||
swagger-ui: |
||||
# 각 API의 그룹 표시 순서 |
||||
# path, query, body, response 순으로 출력 |
||||
path: /index.html |
||||
display-request-duration: true |
||||
|
||||
groups-order: DESC |
||||
|
||||
# 태그 정렬 순서. |
||||
# alpha: 알파벳 순 정렬 |
||||
# method: OpenAPI specification file에 원하는 태그 정렬 방식 직접 기재 |
||||
tags-sorter: alpha |
||||
|
||||
# 컨트롤러 정렬 순서. |
||||
# method는 delete - get - patch - post - put 순으로 정렬된다. |
||||
# alpha를 사용해 알파벳 순으로 정렬할 수 있다. |
||||
operations-sorter: method |
||||
|
||||
# Spring Actuator의 endpoint까지 보여줄 것인지? |
||||
show-actuator: false |
||||
|
||||
# request media type 의 기본 값 |
||||
default-consumes-media-type: application/json |
||||
|
||||
# response media type 의 기본 값 |
||||
default-produces-media-type: application/json |
||||
|
||||
# Swagger UI에서 기본적으로 펼쳐져 보이는 경로의 수 |
||||
doc-expansion : none |
||||
|
||||
|
Loading…
Reference in new issue