diff --git a/src/main/java/com/sosaw/sosaw/global/config/SwaggerConfig.java b/src/main/java/com/sosaw/sosaw/global/config/SwaggerConfig.java index fc3c05c..fb73366 100644 --- a/src/main/java/com/sosaw/sosaw/global/config/SwaggerConfig.java +++ b/src/main/java/com/sosaw/sosaw/global/config/SwaggerConfig.java @@ -1,5 +1,7 @@ package com.sosaw.sosaw.global.config; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; @@ -9,14 +11,32 @@ @Configuration public class SwaggerConfig { + private static final String SECURITY_SCHEME_NAME = "bearerAuth"; + @Bean public OpenAPI openAPI() { + // API 기본 정보 Info info = new Info() .title("sosaw") .version("v0.0.1") .description("공학경진대회 sosaw의 API 명세서"); + + // Bearer(JWT) 스키마 정의 + SecurityScheme bearerAuthScheme = new SecurityScheme() + .type(SecurityScheme.Type.HTTP) // HTTP 인증 + .scheme("bearer") // 스키마는 bearer + .bearerFormat("JWT") // 표시용 포맷 + .in(SecurityScheme.In.HEADER) // 헤더에 담음 + .name("Authorization"); // 헤더 이름 + + // 전역 보안 요구사항, 전체 엔드포인트에 적용 + SecurityRequirement securityRequirement = new SecurityRequirement() + .addList(SECURITY_SCHEME_NAME); + return new OpenAPI() - .components(new Components()) - .info(info); + .info(info) + .components(new Components() + .addSecuritySchemes(SECURITY_SCHEME_NAME, bearerAuthScheme)) + .addSecurityItem(securityRequirement); } -} +} \ No newline at end of file