diff --git a/analytics/build.gradle b/analytics/build.gradle index b5d1be2..c9fdb0f 100644 --- a/analytics/build.gradle +++ b/analytics/build.gradle @@ -8,6 +8,8 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.boot:spring-boot-starter-cache' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0' + // Azure Event Hub implementation 'com.azure:azure-messaging-eventhubs:5.15.0' implementation 'com.azure:azure-messaging-eventhubs-checkpointstore-blob:1.16.0' diff --git a/analytics/src/main/java/com/ktds/hi/AnalyticsApplication.java b/analytics/src/main/java/com/ktds/hi/AnalyticsApplication.java index a03cd88..b263372 100644 --- a/analytics/src/main/java/com/ktds/hi/AnalyticsApplication.java +++ b/analytics/src/main/java/com/ktds/hi/AnalyticsApplication.java @@ -3,6 +3,7 @@ package com.ktds.hi; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; /** * Analytics 서비스 메인 애플리케이션 클래스 diff --git a/analytics/src/main/java/com/ktds/hi/analytics/infra/config/SecurityConfig.java b/analytics/src/main/java/com/ktds/hi/analytics/infra/config/SecurityConfig.java new file mode 100644 index 0000000..a574295 --- /dev/null +++ b/analytics/src/main/java/com/ktds/hi/analytics/infra/config/SecurityConfig.java @@ -0,0 +1,43 @@ +package com.ktds.hi.analytics.infra.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.web.SecurityFilterChain; + +/** + * Analytics 서비스 보안 설정 클래스 + * 테스트를 위해 모든 엔드포인트를 인증 없이 접근 가능하도록 설정 + */ +@Configuration +@EnableWebSecurity +public class SecurityConfig { + + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + http + .csrf(AbstractHttpConfigurer::disable) + .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) + .authorizeHttpRequests(auth -> auth + // Swagger 관련 경로 모두 허용 + .requestMatchers("/swagger-ui/**", "/swagger-ui.html").permitAll() + .requestMatchers("/api-docs/**", "/v3/api-docs/**").permitAll() + .requestMatchers("/swagger-resources/**", "/webjars/**").permitAll() + + // Analytics API 모두 허용 (테스트용) + .requestMatchers("/api/analytics/**").permitAll() + .requestMatchers("/api/action-plans/**").permitAll() + + // Actuator 엔드포인트 허용 + .requestMatchers("/actuator/**").permitAll() + + // 기타 모든 요청 허용 (테스트용) + .anyRequest().permitAll() + ); + + return http.build(); + } +} diff --git a/analytics/src/main/java/com/ktds/hi/analytics/infra/config/SwaggerConfig.java b/analytics/src/main/java/com/ktds/hi/analytics/infra/config/SwaggerConfig.java index 191f39a..3f96b18 100644 --- a/analytics/src/main/java/com/ktds/hi/analytics/infra/config/SwaggerConfig.java +++ b/analytics/src/main/java/com/ktds/hi/analytics/infra/config/SwaggerConfig.java @@ -18,16 +18,10 @@ public class SwaggerConfig { @Bean public OpenAPI openAPI() { return new OpenAPI() - .info(new Info() - .title("Analytics Service API") - .description("하이오더 분석 서비스 API 문서") - .version("1.0.0")) - .addSecurityItem(new SecurityRequirement().addList("Bearer Authentication")) - .components(new Components() - .addSecuritySchemes("Bearer Authentication", - new SecurityScheme() - .type(SecurityScheme.Type.HTTP) - .scheme("bearer") - .bearerFormat("JWT"))); + .info(new Info() + .title("Analytics Service API") + .description("하이오더 분석 서비스 API 문서") + .version("1.0.0")); } + } diff --git a/analytics/src/main/java/com/ktds/hi/analytics/infra/config/WebConfig.java b/analytics/src/main/java/com/ktds/hi/analytics/infra/config/WebConfig.java new file mode 100644 index 0000000..fdfb3ed --- /dev/null +++ b/analytics/src/main/java/com/ktds/hi/analytics/infra/config/WebConfig.java @@ -0,0 +1,31 @@ +package com.ktds.hi.analytics.infra.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebConfig implements WebMvcConfigurer { + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + // Swagger UI 리소스 핸들러 추가 + registry.addResourceHandler("/swagger-ui/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/swagger-ui/") + .resourceChain(false); + + registry.addResourceHandler("/webjars/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/") + .resourceChain(false); + + // 기본 정적 리소스 핸들러 + registry.addResourceHandler("/**") + .addResourceLocations("classpath:/static/", "classpath:/public/") + .resourceChain(false); + + // favicon.ico 처리 + registry.addResourceHandler("/favicon.ico") + .addResourceLocations("classpath:/static/favicon.ico") + .resourceChain(false); + } +} \ No newline at end of file diff --git a/analytics/src/main/resources/application.yml b/analytics/src/main/resources/application.yml index 20cdc5d..0429803 100644 --- a/analytics/src/main/resources/application.yml +++ b/analytics/src/main/resources/application.yml @@ -1,6 +1,11 @@ server: port: ${ANALYTICS_SERVICE_PORT:8084} +logging: + level: + org.springframework.web.servlet.resource.ResourceHttpRequestHandler: ERROR + org.springframework.web.servlet.DispatcherServlet: WARN + spring: application: name: analytics-service