package com.kamco.cd.kamcoback.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 io.swagger.v3.oas.models.servers.Server; import java.util.List; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class OpenApiConfig { @Bean public OpenAPI kamcoOpenAPI() { // 🔹 1) SecurityScheme 정의 (Bearer JWT) SecurityScheme bearerAuth = new SecurityScheme() .type(SecurityScheme.Type.HTTP) .scheme("bearer") .bearerFormat("JWT") .in(SecurityScheme.In.HEADER) .name("Authorization"); // 🔹 2) SecurityRequirement (기본으로 BearerAuth 사용) SecurityRequirement securityRequirement = new SecurityRequirement().addList("BearerAuth"); // 🔹 3) Components 에 SecurityScheme 등록 Components components = new Components().addSecuritySchemes("BearerAuth", bearerAuth); return new OpenAPI() .info( new Info() .title("KAMCO Change Detection API") .description( "KAMCO 변화 탐지 시스템 API 문서\n\n" + "이 API는 지리공간 데이터를 활용한 변화 탐지 시스템을 제공합니다.\n" + "GeoJSON 형식의 공간 데이터를 처리하며, PostgreSQL/PostGIS 기반으로 동작합니다.") .version("v1.0.0") // .contact(new Contact().name("KAMCO Development // Team").email("dev@kamco.com").url("https://kamco.com")) // .license(new License().name("Proprietary").url("https://kamco.com/license")) ) .servers( List.of( new Server().url("http://localhost:8080").description("로컬 개발 서버"), new Server().url("https://kamco.dev-api.gs.dabeeo.com").description("개발 서버") // , new Server().url("https://api.kamco.com").description("운영 서버") )) .components(new Components()) // 🔥 여기 한 줄이 "모든 API 기본적으로 BearerAuth 요구" 의미 .addSecurityItem(securityRequirement); } }