From f2c331214ae96b8b98d635cd816929d17c59e6b8 Mon Sep 17 00:00:00 2001 From: HYOJIN Date: Wed, 8 Apr 2026 09:02:13 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20Basic=20Auth=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=EB=B9=84=ED=99=9C=EC=84=B1=ED=99=94=20=EB=B0=8F=20?= =?UTF-8?q?=EA=B3=84=EC=A0=95=20=EB=A9=94=EB=89=B4=20=EC=88=A8=EA=B9=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/src/App.tsx | 6 ------ frontend/src/components/Navbar.tsx | 3 --- frontend/src/pages/MainMenu.tsx | 4 ++-- .../com/snp/batch/global/config/SecurityConfig.java | 6 +----- .../com/snp/batch/global/config/SwaggerConfig.java | 12 +----------- 5 files changed, 4 insertions(+), 27 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index d7dffa0..cf7f7d1 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -11,9 +11,6 @@ const BypassConfig = lazy(() => import('./pages/BypassConfig')); const BypassCatalog = lazy(() => import('./pages/BypassCatalog')); const ScreeningGuide = lazy(() => import('./pages/ScreeningGuide')); const RiskComplianceHistory = lazy(() => import('./pages/RiskComplianceHistory')); -const BypassAccountRequests = lazy(() => import('./pages/BypassAccountRequests')); -const BypassAccountManagement = lazy(() => import('./pages/BypassAccountManagement')); -const BypassAccessRequest = lazy(() => import('./pages/BypassAccessRequest')); function AppLayout() { const { toasts, removeToast } = useToastContext(); @@ -41,9 +38,6 @@ function AppLayout() { } /> } /> - } /> - } /> - } /> } /> } /> diff --git a/frontend/src/components/Navbar.tsx b/frontend/src/components/Navbar.tsx index ab6f99f..2f37c3c 100644 --- a/frontend/src/components/Navbar.tsx +++ b/frontend/src/components/Navbar.tsx @@ -30,9 +30,6 @@ const MENU_STRUCTURE: MenuSection[] = [ children: [ { id: 'bypass-catalog', label: 'API 카탈로그', path: '/bypass-catalog' }, { id: 'bypass-config', label: 'API 관리', path: '/bypass-config' }, - { id: 'bypass-account-requests', label: '계정 신청 관리', path: '/bypass-account-requests' }, - { id: 'bypass-account-management', label: '계정 관리', path: '/bypass-account-management' }, - { id: 'bypass-access-request', label: 'API 계정 신청', path: '/bypass-access-request' }, ], }, { diff --git a/frontend/src/pages/MainMenu.tsx b/frontend/src/pages/MainMenu.tsx index d580582..65abce9 100644 --- a/frontend/src/pages/MainMenu.tsx +++ b/frontend/src/pages/MainMenu.tsx @@ -5,11 +5,11 @@ const sections = [ { title: 'S&P Global API', description: 'S&P Global Maritime API', - detail: 'API 카탈로그, API 계정 신청', + detail: 'API 카탈로그, API 설정 관리', path: '/bypass-catalog', icon: '🌐', iconClass: 'gc-card-icon gc-card-icon-guide', - menuCount: 5, + menuCount: 2, }, { title: 'S&P Risk & Compliance', diff --git a/src/main/java/com/snp/batch/global/config/SecurityConfig.java b/src/main/java/com/snp/batch/global/config/SecurityConfig.java index 066a12d..04297da 100644 --- a/src/main/java/com/snp/batch/global/config/SecurityConfig.java +++ b/src/main/java/com/snp/batch/global/config/SecurityConfig.java @@ -33,12 +33,8 @@ public class SecurityConfig { .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .authorizeHttpRequests(auth -> auth - .requestMatchers("/api/compliance/**").authenticated() - .requestMatchers("/api/risk/**").authenticated() .anyRequest().permitAll() - ) - .httpBasic(basic -> basic - .authenticationEntryPoint(new BypassAuthenticationEntryPoint())); + ); return http.build(); } diff --git a/src/main/java/com/snp/batch/global/config/SwaggerConfig.java b/src/main/java/com/snp/batch/global/config/SwaggerConfig.java index 08f381c..59dad41 100644 --- a/src/main/java/com/snp/batch/global/config/SwaggerConfig.java +++ b/src/main/java/com/snp/batch/global/config/SwaggerConfig.java @@ -1,12 +1,9 @@ package com.snp.batch.global.config; -import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; -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 org.springdoc.core.models.GroupedOpenApi; import org.springframework.beans.factory.annotation.Value; @@ -77,7 +74,6 @@ public class SwaggerConfig { .title("Bypass API") .description("S&P Global 선박/해운 데이터를 제공합니다.") .version("v1.0.0")); - openApi.addSecurityItem(new SecurityRequirement().addList("basicAuth")); }) .build(); } @@ -115,13 +111,7 @@ public class SwaggerConfig { return new OpenAPI() .info(defaultApiInfo()) - .servers(servers) - .components(new Components() - .addSecuritySchemes("basicAuth", - new SecurityScheme() - .type(SecurityScheme.Type.HTTP) - .scheme("basic") - .description("Bypass API 접근 계정 (발급된 ID/PW 사용)"))); + .servers(servers); } private Info defaultApiInfo() { -- 2.45.2 From b11842a4a97ada43a3bfcdddb0099580bfda6c76 Mon Sep 17 00:00:00 2001 From: HYOJIN Date: Wed, 8 Apr 2026 09:02:45 +0900 Subject: [PATCH 2/2] =?UTF-8?q?docs:=20=EB=A6=B4=EB=A6=AC=EC=A6=88=20?= =?UTF-8?q?=EB=85=B8=ED=8A=B8=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/RELEASE-NOTES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/RELEASE-NOTES.md b/docs/RELEASE-NOTES.md index 78f7f32..5512881 100644 --- a/docs/RELEASE-NOTES.md +++ b/docs/RELEASE-NOTES.md @@ -4,6 +4,11 @@ ## [Unreleased] +### 변경 +- Basic Auth 인증 비활성화 (프록시 서버로 인증 이관) +- Swagger Basic Auth 보안 스키마 제거 +- 프론트엔드 API 계정 신청/관리 메뉴 숨김 + ### 수정 - actuator 경로 로그필터가 context-path 환경에서 동작하지 않는 버그 수정 (#6) -- 2.45.2