Skip to content

feat: 결제/구독 도메인 모델 및 OAuth2 리소스 서버 구축#4

Merged
DongHyeonka merged 1 commit intoSynapsesa:developfrom
DongHyeonka:feature/payment-service-core
Jun 23, 2025
Merged

feat: 결제/구독 도메인 모델 및 OAuth2 리소스 서버 구축#4
DongHyeonka merged 1 commit intoSynapsesa:developfrom
DongHyeonka:feature/payment-service-core

Conversation

@DongHyeonka
Copy link
Contributor

📌 관련 이슈

✨ PR 작업 내용

이번 PR은 결제 서비스의 핵심 기반을 마련하는 작업으로, 도메인 모델링API 보안 설정이라는 두 가지 큰 축으로 구성되어 있습니다.

  • 도메인 모델 구축:

    • 사용자의 구독 정보를 관리하는 Subscription 엔티티와 결제/주문 내역을 기록하는 Order 엔티티를 구현했습니다.
    • 각 도메인의 상태(구독 상태, 결제 상태, 등급)를 enum으로 명확하게 정의하여 관리의 용이성과 타입 안정성을 높였습니다.
  • OAuth2 리소스 서버 보안 설정:

    • ResourceServerConfig를 통해 서비스의 /api/internal/** 엔드포인트를 보호하도록 구성했습니다.
    • API 접근 시 유효한 JWT와 함께 api.internalaccount:read 스코프를 모두 요구하도록 설정하여, 인가된 클라이언트만 내부 API를 호출할 수 있도록 제한합니다.
  • 통합 테스트 및 환경 분리:

    • 리소스 서버의 보안 규칙이 올바르게 동작하는지 검증하기 위해 ResourceServerIntegrationTest를 작성했습니다.
    • @ActiveProfiles("test")application-test.yml을 통해 실제 DB나 외부 인증 서버 없이도 테스트가 가능하도록 H2 DB 및 Mock OAuth2 서버 환경을 구축했습니다.

이미지 첨부


다음 할 일

  • 다음으로 할 일을 작성해 주세요.

결제 서비스의 핵심 기능인 구독과 주문을 관리하기 위한 도메인 모델(`Subscription`, `Order`)과 관련 Repository를 구축합니다.

또한, 서비스의 내부 API를 안전하게 보호하기 위해 Spring Security를 사용하여 OAuth2 리소스 서버를 구성하고, `api.internal` 및 `account:read` 스코프를 가진 클라이언트만 접근할 수 있도록 인가 규칙을 설정합니다.

주요 변경 사항:
- **도메인 모델:** `Subscription`, `Order` 엔티티 및 관련 `enum`(`PaymentStatus`, `SubscriptionStatus`, `SubscriptionTier`) 정의
- **JPA 설정:** `BaseEntity`를 통한 공통 필드 상속 및 `JpaAuditingConfig` 활성화
- **보안 설정:** `ResourceServerConfig`를 통한 OAuth2 리소스 서버 구성 및 스코프 기반 접근 제어 구현
@DongHyeonka DongHyeonka self-assigned this Jun 23, 2025
@DongHyeonka DongHyeonka merged commit 047113d into Synapsesa:develop Jun 23, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant