Skip to content

Conversation

@1117mg
Copy link
Member

@1117mg 1117mg commented Jul 29, 2025

📌 PR 제목

📋 작업 내용

  • redirect uri를 프론트에서 요청받은 파라미터로 설정함
  • 로그인 요청에 파라미터 없으면 디폴트 baseUrl은 localhost:5173 (프론트 로컬)
  • refresh token 추가 및 토큰 재발급 로직 추가
  • 로그아웃 API 추가

✅ 체크리스트

  • 테스트를 완료했나요?
  • 코드 컨벤션을 지켰나요?
  • 관련 문서를 업데이트 했나요?

@1117mg 1117mg requested a review from eric-jy-park July 29, 2025 13:37
@1117mg 1117mg self-assigned this Jul 29, 2025
@1117mg 1117mg added the enhancement New feature or request label Jul 29, 2025
@1117mg 1117mg linked an issue Jul 29, 2025 that may be closed by this pull request
2 tasks
@claude
Copy link

claude bot commented Jul 29, 2025

Claude finished @1117mg's task —— View job


코드 리뷰 완료

전체 리뷰 요약:
카카오 로그인 플로우 리팩토링으로 refresh token 기반 인증 시스템이 구현되었습니다. 기본적인 토큰 관리 로직과 Redis 캐시 연동은 잘 구성되어 있으나, 몇 가지 보안 취약점과 버그가 발견되었습니다. redirect URI 검증 로직과 예외 처리 부분에서 개선이 필요합니다.

발견된 이슈:

OAuth2LoginController.java:37 - issue: 무한 리다이렉트 발생 - 자기 자신으로 리다이렉트하여 무한 루프 생성. /oauth2/authorization/kakao 대신 실제 카카오 인증 URL로 변경 필요.

TokenExpiredException.java:12 - issue: 잘못된 에러 코드 사용 - TOKEN_EXPIRED 대신 INVALID_TOKEN 사용하여 클라이언트에서 토큰 만료와 유효하지 않은 토큰을 구분할 수 없음. ErrorCode.TOKEN_EXPIRED 사용 필요.

OAuth2SuccessHandler.java:84-85 - suggestion: 대소문자 구분 없는 URI 비교로 인한 보안 취약점 - 악의적인 리다이렉트 URI 우회 가능성. equalsIgnoreCase() 대신 정확한 문자열 매칭 사용 권장.

TokenService.java:55 - issue: NPE 발생 가능성 - storedRefreshToken이 null일 때 equals() 호출 시 NPE 발생. Objects.equals() 또는 null 체크 추가 필요.

TokenController.java:37 - suggestion: 인증된 사용자 ID 검증 누락 - 다른 사용자의 토큰을 무효화할 수 있는 취약점. 요청한 사용자와 토큰의 사용자 ID 일치 여부 확인 필요.

@claude
Copy link

claude bot commented Jul 29, 2025

Claude finished @1117mg's task —— View job


코드 리뷰 완료

전체 리뷰 요약:
카카오 로그인 플로우 리팩토링으로 refresh token 기반 인증 시스템이 구현되었습니다. 기본적인 토큰 관리 로직과 Redis 캐시 연동은 잘 구성되어 있으나, 몇 가지 보안 취약점과 버그가 발견되었습니다. redirect URI 검증 로직과 예외 처리 부분에서 개선이 필요합니다.

발견된 이슈:

OAuth2LoginController.java:36 - issue: 무한 리다이렉트 발생 - 자기 자신으로 리다이렉트하여 무한 루프 생성. /oauth2/authorization/kakao 대신 실제 카카오 인증 URL로 변경 필요.

TokenExpiredException.java:12 - issue: 잘못된 에러 코드 사용 - TOKEN_EXPIRED 대신 INVALID_TOKEN 사용하여 클라이언트에서 토큰 만료와 유효하지 않은 토큰을 구분할 수 없음. ErrorCode.TOKEN_EXPIRED 사용 필요.

TokenService.java:55 - issue: NPE 발생 가능성 - storedRefreshToken이 null일 때 Objects.equals() 호출 시 NPE 발생. Objects.equals() 또는 null 체크 추가 필요.

TokenController.java:37 - suggestion: 인증된 사용자 ID 검증 누락 - 다른 사용자의 토큰을 무효화할 수 있는 취약점. 요청한 사용자와 토큰의 사용자 ID 일치 여부 확인 필요.


@claude
Copy link

claude bot commented Jul 29, 2025

Claude finished @1117mg's task —— View job


코드 리뷰 완료

전체 변경사항 요약:
카카오 로그인 플로우가 refresh token 기반으로 리팩토링되어 보안성이 향상되었습니다. Redis를 활용한 토큰 관리와 동적 redirect URI 처리가 추가되었으며, 토큰 재발급 및 로그아웃 API가 새로 구현되었습니다. 기존 JWT 유틸리티도 access/refresh 토큰을 구분하도록 개선되었습니다. 전반적으로 OAuth2 인증 플로우의 완성도가 높아졌으나, 몇 가지 보안 및 안정성 이슈가 발견되었습니다.

발견된 이슈:

OAuth2LoginController.java:36 - issue: 무한 리다이렉트 위험 - 자기 자신으로 리다이렉트하여 무한 루프 발생 가능성, 실제 카카오 인증 URL로 리다이렉트 필요

TokenExpiredException.java:12 - issue: 잘못된 에러 코드 사용 - TOKEN_EXPIRED 대신 INVALID_TOKEN 사용으로 클라이언트가 토큰 만료와 유효하지 않음을 구분할 수 없음

TokenService.java:55 - issue: NPE 발생 가능성 - storedRefreshToken이 null일 때 Objects.equals() 호출에서 NPE 발생, null 체크 또는 안전한 비교 필요

TokenController.java:37-44 - suggestion: 보안 취약점 - 다른 사용자의 토큰을 사용한 재발급 요청 시 검증 부족, 인증된 사용자 ID와 토큰의 사용자 ID 일치 확인 필요


@claude
Copy link

claude bot commented Jul 29, 2025

Claude finished @1117mg's task —— View job


코드 리뷰 완료

전체 리뷰 요약:
카카오 로그인 플로우 리팩토링으로 refresh token 기반 인증 시스템이 구현되었습니다. redirect URI를 동적으로 설정하고, Redis를 활용한 토큰 관리 기능이 추가되었습니다. 기본적인 OAuth2 플로우와 토큰 재발급 로직은 잘 구성되어 있으나, 몇 가지 보안 취약점과 버그가 발견되었습니다.

발견된 이슈:

OAuth2LoginController.java:36 - issue: 무한 리다이렉트 발생 가능성 - 자기 자신으로 리다이렉트하여 무한 루프 생성. /oauth2/authorization/kakao 대신 실제 카카오 인증 URL로 변경 필요.

TokenExpiredException.java:12 - issue: 잘못된 에러 코드 사용 - TOKEN_EXPIRED 대신 INVALID_TOKEN 사용하여 클라이언트에서 토큰 만료와 유효하지 않은 토큰을 구분할 수 없음. ErrorCode.TOKEN_EXPIRED 사용 필요.

OAuth2SuccessHandler.java:84-85 - suggestion: 대소문자 구분 없는 URI 비교로 인한 보안 취약점 - 악의적인 리다이렉트 URI 우회 가능성. equals() 대신 정확한 문자열 매칭 사용 권장.

TokenService.java:55 - issue: NPE 발생 가능성 - storedRefreshToken이 null일 때 Objects.equals() 호출 시 NPE 발생. null 체크 추가 또는 매개변수 순서 변경 필요.


작업 목록

  • 주요 변경 파일 분석
  • 보안 취약점 및 버그 검토
  • 성능 이슈 확인
  • 코드 리뷰 결과 작성

@1117mg 1117mg merged commit cbefa09 into main Jul 29, 2025
1 check passed
@1117mg 1117mg deleted the feat/45-login-flow-refactoring branch July 30, 2025 15:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] 인증 구조 변경

2 participants