Skip to content

Conversation

@kgy1008
Copy link
Member

@kgy1008 kgy1008 commented Sep 21, 2025

📣 Jira Ticket

EDMT-450

👩‍💻 작업 내용

🔧 보안 패키지 구조 리팩토링

  • Security 관련 클래스들을 com.edukit.common.security에서 com.edukit.auth.security로 이동
  • 인증/보안 관련 기능의 응집도 향상 및 명확한 책임 분리
  • 13개 파일의 패키지 경로 및 import 구문 업데이트

📊 메트릭 모니터링 접근성 개선

  • Security Whitelist에 메트릭 엔드포인트 추가
    • /actuator/metrics: Spring Boot Actuator 메트릭
    • /metrics: 직접 메트릭 엔드포인트
  • JWT 토큰 없이 모니터링 도구에서 메트릭 수집 가능
  • Prometheus, Grafana 등 외부 모니터링 시스템 연동 최적화

🏗️ 패키지 구조 개선 상세

기존: com.edukit.common.security.*
변경: com.edukit.auth.security.*

이동된 주요 클래스들:

  • SecurityConfig: Spring Security 설정
  • SecurityWhitelist: 인증 제외 경로 관리
  • JwtAuthenticationFilter: JWT 토큰 검증 필터
  • ExceptionHandlerFilter: 보안 예외 처리 필터
  • 기타 인증/인가 관련 핸들러 및 유틸리티

📝 리뷰 요청 & 논의하고 싶은 내용

  • 보안 패키지 이동으로 인한 다른 모듈 간 의존성 영향 검토
  • 메트릭 엔드포인트 노출에 따른 보안 고려사항 검토
  • 운영 환경에서 메트릭 접근 제한 정책 수립 필요성

Test Plan

✅ Manual Testing Checklist

  • 기존 인증/인가 기능 정상 동작 확인
  • JWT 토큰 기반 API 접근 정상 확인
  • /actuator/metrics 엔드포인트 토큰 없이 접근 가능 확인
  • /metrics 엔드포인트 토큰 없이 접근 가능 확인
  • 보안이 필요한 API는 여전히 토큰 필수 확인
  • CORS 설정 정상 동작 확인

🧪 Automated Tests

  • Unit tests pass: ./gradlew test
  • Integration tests pass: ./gradlew integrationTest
  • Build succeeds: ./gradlew build
  • Security configuration 테스트 통과

🔍 Code Quality

  • 코드 리뷰 완료
  • 패키지 이동으로 인한 import 오류 없음
  • 보안 설정 검토 완료
  • 메트릭 엔드포인트 보안 검토 완료

Deployment Notes

  • 기존 보안 설정과 동일한 동작 확인
  • 메트릭 수집 도구에서 새 엔드포인트 접근 테스트
  • 운영 환경 방화벽에서 메트릭 포트 접근 허용 확인
  • 모니터링 도구 설정 업데이트 (필요시)

🔒 보안 고려사항

  • 메트릭 엔드포인트는 민감한 시스템 정보를 포함할 수 있음
  • 내부 네트워크에서만 접근 가능하도록 방화벽 설정 권장
  • 필요시 IP 기반 접근 제한 추가 고려

🤖 Generated with Claude Code

Summary by CodeRabbit

  • 신기능
    • 시스템 모니터링을 위해 메트릭 엔드포인트(/actuator/metrics, /metrics)를 화이트리스트에 추가했습니다. 이제 해당 경로는 인증 없이 접근되어 대시보드 및 프로메테우스 스크레이핑이 원활합니다.
  • 리팩터링
    • 인증/보안 모듈의 패키지와 네임스페이스를 서비스 영역에 맞게 재정비하고, 연관된 의존성 경로를 일괄 정리했습니다. 애플리케이션 동작이나 외부 API 사용 방식에는 변화가 없습니다.

@coderabbitai
Copy link

coderabbitai bot commented Sep 21, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

본 변경 사항은 com.edukit.common.security.* 패키지에 있던 인증 및 보안 관련 클래스들을 com.edukit.auth.security.* 패키지로 일괄 이동시키고, 이에 따라 관련된 import 경로를 업데이트하였습니다. 또한 화이트리스트 일부 엔드포인트가 추가되었습니다.

Changes

Cohort / File(s) Change Summary
Security Authentication Classes
edukit-api/src/main/java/com/edukit/auth/security/authentication/MemberAuthentication.java,
.../MemberDetailReader.java,
.../MemberRoleConverter.java
패키지 선언을 com.edukit.common.security.authentication에서 com.edukit.auth.security.authentication으로 변경
Security Config Classes
edukit-api/src/main/java/com/edukit/auth/security/config/CorsConfig.java,
.../SecurityConfig.java
패키지 선언을 com.edukit.common.security.config에서 com.edukit.auth.security.config으로 변경 및 import 경로 일괄 업데이트
Security Whitelist
edukit-api/src/main/java/com/edukit/auth/security/config/SecurityWhitelist.java
패키지 선언을 변경하고, APP_WHITE_LIST 배열에 "/actuator/metrics", "/metrics" 엔드포인트 추가
Security Filter Classes
edukit-api/src/main/java/com/edukit/auth/security/filter/ExceptionHandlerFilter.java,
.../JwtAuthenticationFilter.java
패키지 선언을 com.edukit.common.security.filter에서 com.edukit.auth.security.filter로 변경 및 관련 import 경로 업데이트
JWT 핸들러 및 쿠키 핸들러
edukit-api/src/main/java/com/edukit/auth/security/handler/JwtAccessDeniedHandler.java,
.../JwtAuthenticationEntryPoint.java,
.../RefreshTokenCookieHandler.java
패키지 선언을 com.edukit.common.security.handler에서 com.edukit.auth.security.handler로 변경,
AllowedOriginValidator import 경로와 static import 경로 업데이트
Utils
edukit-api/src/main/java/com/edukit/auth/security/utils/AllowedOriginValidator.java
패키지 선언을 com.edukit.common.security.utils에서 com.edukit.auth.security.utils로 변경
Controller Import Update
edukit-api/src/main/java/com/edukit/auth/controller/v1/AuthV1Controller.java
RefreshTokenCookieHandlerREFRESH_TOKEN_COOKIE_NAME 관련 import 경로를 auth 패키지로 변경

Sequence Diagram(s)

(생성할 시퀀스/플로우 구조 변화나 새로운 흐름이 없으므로 생략)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

✨refac✨

Suggested reviewers

  • TaegeunYou

Poem

🐇
패키지가 쏙 바뀌는 하루,
auth가 common을 대신하네—
import도 새 옷을 차려입고,
작은 화이트리스트도 살짝 추가!
바람결 따라~ 토끼는 춤추며,
정갈한 경로로 hop, hop, hop!
🥕✨

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/EDMT-453

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1425f31 and 6392ad8.

📒 Files selected for processing (13)
  • edukit-api/src/main/java/com/edukit/auth/controller/v1/AuthV1Controller.java (2 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/authentication/MemberAuthentication.java (1 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/authentication/MemberDetailReader.java (1 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/authentication/MemberRoleConverter.java (1 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/config/CorsConfig.java (1 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/config/SecurityConfig.java (1 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/config/SecurityWhitelist.java (2 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/filter/ExceptionHandlerFilter.java (1 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/filter/JwtAuthenticationFilter.java (1 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/handler/JwtAccessDeniedHandler.java (1 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/handler/JwtAuthenticationEntryPoint.java (1 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/handler/RefreshTokenCookieHandler.java (1 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/utils/AllowedOriginValidator.java (1 hunks)

Comment @coderabbitai help to get the list of available commands and usage tips.

@kgy1008 kgy1008 changed the title [EDMT-453] 보안 구성 개선: 패키지 구조 리팩토링 및 메트릭 엔드포인트 접근 최적화 [EDMT-453] 패키지 구조 리팩토링 Sep 21, 2025
@kgy1008 kgy1008 self-assigned this Sep 21, 2025
@kgy1008 kgy1008 changed the title [EDMT-453] 패키지 구조 리팩토링 [EDMT-450] 패키지 구조 리팩토링 Sep 21, 2025
@kgy1008 kgy1008 merged commit d778801 into develop Sep 21, 2025
1 of 2 checks passed
@kgy1008 kgy1008 deleted the fix/EDMT-453 branch September 21, 2025 17:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants