refactor: Basic Auth 인증 비활성화 및 계정 메뉴 숨김 #8

병합
HYOJIN feature/disable-auth 에서 develop 로 2 commits 를 머지했습니다 2026-04-08 09:03:29 +09:00
6개의 변경된 파일9개의 추가작업 그리고 27개의 파일을 삭제

파일 보기

@ -4,6 +4,11 @@
## [Unreleased] ## [Unreleased]
### 변경
- Basic Auth 인증 비활성화 (프록시 서버로 인증 이관)
- Swagger Basic Auth 보안 스키마 제거
- 프론트엔드 API 계정 신청/관리 메뉴 숨김
### 수정 ### 수정
- actuator 경로 로그필터가 context-path 환경에서 동작하지 않는 버그 수정 (#6) - actuator 경로 로그필터가 context-path 환경에서 동작하지 않는 버그 수정 (#6)

파일 보기

@ -11,9 +11,6 @@ const BypassConfig = lazy(() => import('./pages/BypassConfig'));
const BypassCatalog = lazy(() => import('./pages/BypassCatalog')); const BypassCatalog = lazy(() => import('./pages/BypassCatalog'));
const ScreeningGuide = lazy(() => import('./pages/ScreeningGuide')); const ScreeningGuide = lazy(() => import('./pages/ScreeningGuide'));
const RiskComplianceHistory = lazy(() => import('./pages/RiskComplianceHistory')); 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() { function AppLayout() {
const { toasts, removeToast } = useToastContext(); const { toasts, removeToast } = useToastContext();
@ -41,9 +38,6 @@ function AppLayout() {
<Routes> <Routes>
<Route path="/bypass-catalog" element={<BypassCatalog />} /> <Route path="/bypass-catalog" element={<BypassCatalog />} />
<Route path="/bypass-config" element={<BypassConfig />} /> <Route path="/bypass-config" element={<BypassConfig />} />
<Route path="/bypass-account-requests" element={<BypassAccountRequests />} />
<Route path="/bypass-account-management" element={<BypassAccountManagement />} />
<Route path="/bypass-access-request" element={<BypassAccessRequest />} />
<Route path="/screening-guide" element={<ScreeningGuide />} /> <Route path="/screening-guide" element={<ScreeningGuide />} />
<Route path="/risk-compliance-history" element={<RiskComplianceHistory />} /> <Route path="/risk-compliance-history" element={<RiskComplianceHistory />} />
</Routes> </Routes>

파일 보기

@ -30,9 +30,6 @@ const MENU_STRUCTURE: MenuSection[] = [
children: [ children: [
{ id: 'bypass-catalog', label: 'API 카탈로그', path: '/bypass-catalog' }, { id: 'bypass-catalog', label: 'API 카탈로그', path: '/bypass-catalog' },
{ id: 'bypass-config', label: 'API 관리', path: '/bypass-config' }, { 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' },
], ],
}, },
{ {

파일 보기

@ -5,11 +5,11 @@ const sections = [
{ {
title: 'S&P Global API', title: 'S&P Global API',
description: 'S&P Global Maritime API', description: 'S&P Global Maritime API',
detail: 'API 카탈로그, API 계정 신청', detail: 'API 카탈로그, API 설정 관리',
path: '/bypass-catalog', path: '/bypass-catalog',
icon: '🌐', icon: '🌐',
iconClass: 'gc-card-icon gc-card-icon-guide', iconClass: 'gc-card-icon gc-card-icon-guide',
menuCount: 5, menuCount: 2,
}, },
{ {
title: 'S&P Risk & Compliance', title: 'S&P Risk & Compliance',

파일 보기

@ -33,12 +33,8 @@ public class SecurityConfig {
.sessionManagement(session -> .sessionManagement(session ->
session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests(auth -> auth .authorizeHttpRequests(auth -> auth
.requestMatchers("/api/compliance/**").authenticated()
.requestMatchers("/api/risk/**").authenticated()
.anyRequest().permitAll() .anyRequest().permitAll()
) );
.httpBasic(basic -> basic
.authenticationEntryPoint(new BypassAuthenticationEntryPoint()));
return http.build(); return http.build();
} }

파일 보기

@ -1,12 +1,9 @@
package com.snp.batch.global.config; 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.OpenAPI;
import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License; 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 io.swagger.v3.oas.models.servers.Server;
import org.springdoc.core.models.GroupedOpenApi; import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -77,7 +74,6 @@ public class SwaggerConfig {
.title("Bypass API") .title("Bypass API")
.description("S&P Global 선박/해운 데이터를 제공합니다.") .description("S&P Global 선박/해운 데이터를 제공합니다.")
.version("v1.0.0")); .version("v1.0.0"));
openApi.addSecurityItem(new SecurityRequirement().addList("basicAuth"));
}) })
.build(); .build();
} }
@ -115,13 +111,7 @@ public class SwaggerConfig {
return new OpenAPI() return new OpenAPI()
.info(defaultApiInfo()) .info(defaultApiInfo())
.servers(servers) .servers(servers);
.components(new Components()
.addSecuritySchemes("basicAuth",
new SecurityScheme()
.type(SecurityScheme.Type.HTTP)
.scheme("basic")
.description("Bypass API 접근 계정 (발급된 ID/PW 사용)")));
} }
private Info defaultApiInfo() { private Info defaultApiInfo() {