Skip to content

[BE/Auth] v1 인증 경로 제거 및 카카오 토큰 발급 앱 검증 #332

Description

@Whale0928

배경

레거시 v1 인증 경로가 소셜 토큰 검증을 거치지 않고 인증을 통과시킬 수 있는 구조로 남아 있었다. 함께 남아 있던 이메일/비밀번호 계열 로직(계정 복구 포함)도 같은 성격의 문제를 안고 있었다.

추가로 카카오 로그인이 액세스 토큰을 발급한 앱을 구분하지 않아, 우리 앱에서 발급되지 않은 토큰도 수용될 여지가 있었다. 카카오 토큰은 발급한 앱 안에서만 유효하지만 사용자 정보 조회 자체는 성공하므로, 발급 앱을 대조하지 않으면 걸러지지 않는다.

완료된 작업

PR: bottle-note/bottle-note-api-server#674 (merged)

제거

  • POST /api/v1/oauth/login
  • POST /api/v1/oauth/restore (계정 복구)
  • 이메일/비밀번호(BASIC) 로직 일체 — SocialType.BASIC, User.password 필드, 관련 DTO·서비스
  • 미사용 테스트 더블 정리

추가

  • 카카오 액세스 토큰의 발급 앱 검증 — 사용자 정보를 조회하기 전에 토큰이 우리 앱에서 발급된 것인지 대조하고, 아니면 401로 거부한다.
  • POST /api/v2/auth/reissue, PUT /api/v2/auth/token/verify — v1과 동작이 같은 복제본. FE 전환을 지원하기 위한 것으로, 로직은 동일 서비스를 공유한다.

결과

로그인 수단이 카카오·애플 v2 두 가지로 단일화됐다.

API 현황

엔드포인트 상태
POST /api/v2/auth/{kakao,apple} 유일한 로그인 경로
POST /api/v2/auth/reissue 신규 (v1과 동일)
PUT /api/v2/auth/token/verify 신규 (v1과 동일)
POST /api/v1/oauth/reissue 유지 — FE 전환 후 제거 예정
PUT /api/v1/oauth/token/verify 유지 — FE 전환 후 제거 예정
POST /api/v1/oauth/login 제거됨
POST /api/v1/oauth/restore 제거됨

검증 — 개발 환경 완료

개발 환경 배포 후 아래를 실제로 확인했다.

항목 결과
기동 및 설정 주입 정상
정상 카카오 로그인 200
타 카카오 앱에서 발급된 토큰 제출 401, 서버 로그에 발급 앱 불일치 기록 확인
v1 로그인 경로 제거 핸들러 없음 확인
토큰 재발급 v1·v2 병존 양쪽 정상 동작

이 변경 전이었다면 마지막 케이스의 토큰은 그대로 통과했을 것이다.

남은 작업

  • 운영 배포 — 현재 개발 환경에서만 검증됐고 운영은 배포 전이다.
  • 운영 배포 전 앱 식별자 설정 반영 확인 (선행 필수) — 이 값이 비어 있으면 애플리케이션이 기동되지 않도록 되어 있다(fail-fast). 운영과 개발은 서로 다른 카카오 앱을 쓰므로 값도 다르다. 시크릿이 클러스터에 먼저 반영된 뒤 앱 배포가 나가야 한다.
  • 운영 배포 후 운영 환경에서도 동일 검증 수행 — 개발에서 확인한 "타 앱 토큰 거부"가 운영에서도 같은 결과를 내는지 확인한다.
  • 타 앱 토큰 거부 케이스 회귀 테스트 추가 — 현재 검증 로직을 덮는 자동 테스트가 없다.
  • FE의 토큰 API v2 전환 완료 후 v1 경로 완전 제거 및 릴리즈 — [FE/Auth] 토큰 재발급·검증 API v1 -> v2 경로 전환 #333
  • users.password 컬럼 DROP 마이그레이션 — 엔티티 필드만 제거했고 컬럼은 남아 있다.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions