Description 📝현재 문제점
현재 SecurityConfig가 anyRequest().permitAll() 상태로 인증이 전혀 없음
MemberController의 GET /api/members/me가 memberUuid를 쿼리 파라미터로 직접 받아 인증 없이 동작
익명 회원(createAnonymous) 방식으로만 가입 가능하며 소셜 로그인 연동이 없음
관리자 페이지(/admin/**) 권한 분리가 인프라 레벨에만 의존
🛠️해결 방안 / 제안 기능
프론트에서 Firebase SDK로 소셜 로그인 후 받은 idToken을 백엔드로 전달
Firebase Admin SDK(verifyIdToken())로 idToken 검증 후 자체 JWT 발급
5개 OAuth provider 지원
Firebase 기반 (Google, Apple): FirebaseLoginStrategy 추상 클래스 상속
REST API 직접 검증 (Kakao, Naver, Github): 각 provider 별 전략 구현
JwtAuthenticationFilter를 Spring Security Filter Chain에 등록
AccessToken(1h) + RefreshToken(14d) 이중 토큰 구조, RefreshToken은 Redis 저장
MemberRole(USER/ADMIN/SUPER_ADMIN) 기반 경로별 권한 분리
모든 보호 API의 memberUuid 쿼리 파라미터를 @AuthMember 토큰 기반으로 전환
익명 회원(createAnonymous) 및 POST /api/members/register 삭제 (하드리셋)
⚙️작업 내용
FirebaseConfig.java — FirebaseApp, FirebaseAuth Bean 등록 (PQL-Web/config)
SecurityConfig.java — JwtAuthenticationFilter 등록, 경로별 권한 설정
JwtAuthenticationFilter.java — Security Filter Chain (PQL-Common/security)
LoginMember.java — SecurityContext 객체 (UUID 기반)
LoginMemberArgumentResolver.java — @AuthMember → LoginMember 주입
JwtTokenProvider.java — AccessToken/RefreshToken 발급 및 검증
AuthService.java — 로그인/재발급/로그아웃 비즈니스 로직
AuthController.java — POST /api/auth/{login, reissue, logout}
SocialLoginStrategy 전략 패턴 5개 구현 (Google, Apple, Kakao, Naver, Github)
RefreshTokenRepository.java — Redis refresh_token:{memberUuid} 저장소
Member.signUp() 팩토리 메서드 추가, createAnonymous() 삭제
ErrorCode — Auth 관련 에러 코드 8개 추가
application-dev.yml, application-prod.yml — jwt, firebase 설정 추가
Flyway 마이그레이션 — ANONYMOUS 데이터 정리
설계 문서: docs/superpowers/specs/2026-04-18-auth-design.md
🙋♂️담당자
Reactions are currently unavailable
You can’t perform that action at this time.
📝현재 문제점
SecurityConfig가anyRequest().permitAll()상태로 인증이 전혀 없음MemberController의GET /api/members/me가memberUuid를 쿼리 파라미터로 직접 받아 인증 없이 동작createAnonymous) 방식으로만 가입 가능하며 소셜 로그인 연동이 없음/admin/**) 권한 분리가 인프라 레벨에만 의존🛠️해결 방안 / 제안 기능
idToken을 백엔드로 전달verifyIdToken())로 idToken 검증 후 자체 JWT 발급FirebaseLoginStrategy추상 클래스 상속JwtAuthenticationFilter를 Spring Security Filter Chain에 등록MemberRole(USER/ADMIN/SUPER_ADMIN)기반 경로별 권한 분리memberUuid쿼리 파라미터를@AuthMember토큰 기반으로 전환createAnonymous) 및POST /api/members/register삭제 (하드리셋)⚙️작업 내용
FirebaseConfig.java— FirebaseApp, FirebaseAuth Bean 등록 (PQL-Web/config)SecurityConfig.java— JwtAuthenticationFilter 등록, 경로별 권한 설정JwtAuthenticationFilter.java— Security Filter Chain (PQL-Common/security)LoginMember.java— SecurityContext 객체 (UUID 기반)LoginMemberArgumentResolver.java—@AuthMember→LoginMember주입JwtTokenProvider.java— AccessToken/RefreshToken 발급 및 검증AuthService.java— 로그인/재발급/로그아웃 비즈니스 로직AuthController.java—POST /api/auth/{login, reissue, logout}SocialLoginStrategy전략 패턴 5개 구현 (Google, Apple, Kakao, Naver, Github)RefreshTokenRepository.java— Redisrefresh_token:{memberUuid}저장소Member.signUp()팩토리 메서드 추가,createAnonymous()삭제ErrorCode— Auth 관련 에러 코드 8개 추가application-dev.yml,application-prod.yml— jwt, firebase 설정 추가docs/superpowers/specs/2026-04-18-auth-design.md🙋♂️담당자