feat: X-Service-Code / X-API-KEY 서비스 식별 미들웨어 구현 (#32) #33

Merged
seonkyu.kim merged 1 commits from feature/#32-service-code-middleware into develop 2026-02-09 08:26:52 +00:00
Owner

📋 작업 요약

  • X-Service-Code 헤더 기반 서비스 식별 미들웨어 구현 (파이프라인 12번)
  • X-API-KEY 검증 미들웨어 구현 (파이프라인 13번, SDK/디바이스 전용)
  • ServiceRepository 구현 (IServiceRepository 인터페이스 구현체)

Closes #32

🛠️ 작업 내용 (Changes)

  • SPMS.Infrastructure/Persistence/Repositories/ServiceRepository.cs — IServiceRepository 구현 (GetByServiceCode, GetByApiKey, GetByIdWithIps, GetByStatus)
  • SPMS.API/Middlewares/ServiceCodeMiddleware.cs — X-Service-Code 헤더 검증, DB 조회, 서비스 활성 상태 확인, HttpContext.Items 저장
  • SPMS.API/Middlewares/ApiKeyMiddleware.cs — /v1/in/device/* 경로만 X-API-KEY 검증
  • SPMS.Infrastructure/DependencyInjection.cs — IServiceRepository DI 등록 (AddScoped)
  • SPMS.API/Extensions/ApplicationBuilderExtensions.cs — 미들웨어 파이프라인 12~13번 등록

📢 리뷰어 참고 사항 (To Reviewers)

  • ServiceCodeMiddleware는 /v1/out/*, /swagger, /health 경로를 예외 처리하여 공개 API와 Swagger UI에는 영향 없음
  • ApiKeyMiddleware는 /v1/in/device/* 경로에서만 X-API-KEY 검증 수행
  • 두 미들웨어 모두 검증 실패 시 ApiResponse.Fail() 형태로 응답 반환
  • ServiceRepository는 Generic Repository를 상속하여 IServiceRepository 전용 쿼리 메서드 구현

체크리스트 (Self Checklist)

  • 빌드(Build)가 성공적으로 수행되었는가?
  • 모든 단위 테스트(Unit Test)를 통과하였는가?
  • 불필요한 로그나 주석을 제거하였는가?
  • 컨벤션(Clean Architecture, Naming)을 준수하였는가?
  • 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가?

📸 스크린샷 / 테스트 로그 (Screenshots/Logs)

빌드했습니다.
    경고 0개
    오류 0개
## 📋 작업 요약 - X-Service-Code 헤더 기반 서비스 식별 미들웨어 구현 (파이프라인 12번) - X-API-KEY 검증 미들웨어 구현 (파이프라인 13번, SDK/디바이스 전용) - ServiceRepository 구현 (IServiceRepository 인터페이스 구현체) ## 🔗 관련 이슈 (Related Issues) Closes #32 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Infrastructure/Persistence/Repositories/ServiceRepository.cs` — IServiceRepository 구현 (GetByServiceCode, GetByApiKey, GetByIdWithIps, GetByStatus) - [x] `SPMS.API/Middlewares/ServiceCodeMiddleware.cs` — X-Service-Code 헤더 검증, DB 조회, 서비스 활성 상태 확인, HttpContext.Items 저장 - [x] `SPMS.API/Middlewares/ApiKeyMiddleware.cs` — /v1/in/device/* 경로만 X-API-KEY 검증 - [x] `SPMS.Infrastructure/DependencyInjection.cs` — IServiceRepository DI 등록 (AddScoped) - [x] `SPMS.API/Extensions/ApplicationBuilderExtensions.cs` — 미들웨어 파이프라인 12~13번 등록 ## 📢 리뷰어 참고 사항 (To Reviewers) - ServiceCodeMiddleware는 `/v1/out/*`, `/swagger`, `/health` 경로를 예외 처리하여 공개 API와 Swagger UI에는 영향 없음 - ApiKeyMiddleware는 `/v1/in/device/*` 경로에서만 X-API-KEY 검증 수행 - 두 미들웨어 모두 검증 실패 시 ApiResponse.Fail() 형태로 응답 반환 - ServiceRepository는 Generic Repository를 상속하여 IServiceRepository 전용 쿼리 메서드 구현 ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` 빌드했습니다. 경고 0개 오류 0개 ```
seonkyu.kim added 1 commit 2026-02-09 08:25:54 +00:00
- ServiceRepository: IServiceRepository 구현 (GetByServiceCode, GetByApiKey)
- ServiceCodeMiddleware: X-Service-Code 헤더 검증, DB 조회, 서비스 상태 확인
- ApiKeyMiddleware: /v1/in/device/* 경로 X-API-KEY 검증
- ApplicationBuilderExtensions: 미들웨어 파이프라인 12~13번 등록
- DependencyInjection: IServiceRepository DI 등록

Closes #32
seonkyu.kim added the
Priority
High
Status
In Progress
Type
Feature
labels 2026-02-09 08:26:07 +00:00
seonkyu.kim self-assigned this 2026-02-09 08:26:10 +00:00
seonkyu.kim added this to the Phase 1: 인프라 & 공통 모듈 milestone 2026-02-09 08:26:14 +00:00
seonkyu.kim requested review from Owners 2026-02-09 08:26:21 +00:00
seonkyu.kim merged commit c49807c985 into develop 2026-02-09 08:26:52 +00:00
seonkyu.kim deleted branch feature/#32-service-code-middleware 2026-02-09 08:27:10 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-09 08:27:25 +00:00
Sign in to join this conversation.
No description provided.