[BE-10] SecurityConfig 와이어업 (Partner 필터 등록 + admin matcher)
작업 내용 (설계 의도)
변경 사항
근거 TDD: ../TDD.md “Release Scenario”. 공통 파일 SecurityConfig.kt 단독 수정 통합 티켓 — Single Writer 보호를 위해 마지막 wave 단독 배치.
infrastructure/security/SecurityConfig.kt:PartnerApiKeyAuthenticationFilter(BE-08)를addFilterBefore(..., UsernamePasswordAuthenticationFilter)— JWT/mcp 필터와 동일 지점.partner.auth.enabled=true일 때만 등록(플래그 게이트, mcp의@Autowired(required=false)방식 참조 가능).auth.requestMatchers("/api/admin/partners/**").hasRole("ADMIN")추가.- 재사용 엔드포인트(
/api/goods-seller/**·/api/event-host/**)는 이미authenticated()→ 변경 없음.
application.yml—partner.auth.enabled기본값(배포 시 OFF → ON 전환).
롤백: partner.auth.enabled=false → 필터 미등록, 파트너 인증 휴면. B2C/JWT/mcp 무영향.
의존
- BE-08
다이어그램
처리 흐름 (필터 체인)
flowchart LR Req["Request"] PF["PartnerApiKeyFilter (flag ON)"] MF["McpTokenFilter"] JF["JwtAuthenticationFilter"] Chain["FilterSecurityInterceptor"] Req --> PF PF --> MF MF --> JF JF --> Chain
테스트 케이스
- partner.auth.enabled=true일 때 파트너 API Key 요청이 인증되어 등록 엔드포인트에 도달한다.
- partner.auth.enabled=false일 때 필터가 미등록되고 파트너 키 요청은 401을 받는다(휴면).
- /api/admin/partners/** 요청은 비ADMIN 시 403을 받는다.
- 기존 JWT 기반 B2C 요청은 파트너 필터 등록 후에도 정상 동작한다(회귀 없음).