Skip to content

Conversation

@GiJungPark
Copy link
Contributor

@GiJungPark GiJungPark commented Jan 11, 2026

Related Issue

Key Changes

1. 문제 현상 (AS-IS)

  • 기존 [FIX] Apple Social Id 동기화 작업 #440 작업 이후, 애플 소셜 연동(PATCH /auth/apple/sync) 시 Access Token이 만료된 상태라면 Security Filter Chain에서 401 Unauthorized가 발생
  • 이로 인해 클라이언트(프론트)에서 연동 로직을 처리하지 못하고 로그인 페이지나 로딩 상태에 갇히는 버그 발생

2. 해결 방안 (TO-BE)

만료된 토큰이라도 사용자 식별(User ID) 만 가능하다면 연동 로직을 수행할 수 있도록 변경했습니다.

  • SecurityConfig.java:

    • /auth/apple/sync 경로를 permitAll()로 설정하여 Security Filter의 토큰 만료 검증을 우회하도록 수정
  • JwtProvider.java:

    • getUserIdFromExpiredToken() 메서드 추가
    • Jwts.parserBuilder() 실행 시 ExpiredJwtException이 발생하더라도, 예외 객체 내의 Claims를 조회하여 userId를 추출하도록 구현
  • AuthController.java:

    • 기존 @AuthenticationPrincipal은 유효한 토큰일 때만 동작하므로 제거
    • 대신 @RequestHeader("Authorization")을 통해 토큰 문자열을 직접 받아, 위에서 구현한 파싱 메서드로 유저를 식별하도록 변경

To Reviewers

References

- SecurityConfig: 애플 연동 API 경로(sync) 인증 필터 제외
- JwtProvider: 만료된 토큰에서도 userId 추출하는 로직 추가
- AuthController: 헤더에서 직접 토큰 파싱하여 유저 조회하도록 변경
@GiJungPark GiJungPark self-assigned this Jan 11, 2026
@GiJungPark GiJungPark merged commit a351887 into main Jan 11, 2026
2 checks 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.

2 participants