feat: APNs/FCM 키 등록 및 조회 API 구현 (#48) #49
No reviewers
SPMS/Owners
Labels
No Label
Priority
High
Priority
Low
Priority
Medium
Priority
Non
Priority
Urgent
Status
Available
Status
Done
Status
In Progress
Type
Bug
Type
Chore
Type
Design
Type
Documentation
Type
Feature
Type
Improvement
Type
Refactor
Type
Research
Type
Task
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: SPMS/SPMS_API#49
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "feature/#48-apns-fcm-credentials"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 작업 요약
APNs 및 FCM 푸시 발송에 필요한 인증 키를 등록하고 조회하는 API를 구현합니다.
🔗 관련 이슈 (Related Issues)
Closes #48
🛠️ 작업 내용 (Changes)
Application Layer
ApnsCredentialsRequestDto.cs— APNs 키 등록 요청 DTO (BundleId, KeyId, TeamId, PrivateKey)FcmCredentialsRequestDto.cs— FCM 키 등록 요청 DTO (ServiceAccountJson)CredentialsResponseDto.cs— 키 정보 조회 응답 DTO (메타 정보만)ICredentialEncryptionService.cs— 암호화 서비스 인터페이스IServiceManagementService.cs— APNs/FCM 메서드 추가ServiceManagementService.cs— 비즈니스 로직 구현Infrastructure Layer
CredentialEncryptionService.cs— AES-256 암호화/복호화 서비스 구현DependencyInjection.cs— DI 등록API Layer
POST /v1/in/service/{serviceCode}/apns— APNs 키 등록POST /v1/in/service/{serviceCode}/fcm— FCM 키 등록POST /v1/in/service/{serviceCode}/credentials— 키 정보 조회Domain
ErrorCodes.cs— Service 도메인 에러 코드 추가 (DecryptionFailed, InvalidCredentials)📢 리뷰어 참고 사항 (To Reviewers)
appsettings.json의CredentialEncryption:Key에 32바이트(Base64 인코딩) 키를 설정해야 합니다.BEGIN PRIVATE KEY/END PRIVATE KEY존재 여부 확인✅ 체크리스트 (Self Checklist)
📸 스크린샷 / 테스트 로그 (Screenshots/Logs)
- APNs 키 등록 API (POST /v1/in/service/{serviceCode}/apns) - FCM 키 등록 API (POST /v1/in/service/{serviceCode}/fcm) - 키 정보 조회 API (POST /v1/in/service/{serviceCode}/credentials) - AES-256 암호화로 민감 정보 저장 - 조회 시 메타 정보만 반환 (Private Key 미노출) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>