🎯 작업 목적
기존의 하드코딩된 임시 인증(Bearer frontend-client) 로직을 모두 걷어내고, AUTH 명세서(API-001~004)에 기반한 실제 JWT(Json Web Token) 로그인/회원가입 시스템을 구축하여 애플리케이션의 인증 보안과 세션 관리를 실질적으로 구동하기 위함입니다.
✨ 주요 변경 사항
🛠️ 리뷰 및 로컬 테스트 방법
- 백엔드 라이브러리 설치 및 실행
cd backend
pip install -r requirements.txt # python-jose, passlib 등 추가됨
uvicorn app.main:app --reload
Swagger UI (http://localhost:8000/docs) 테스트
POST /api/auth/register에서 이메일/비밀번호(8자 이상)로 계정 생성
POST /api/auth/login으로 로그인한 뒤 응답으로 받은 accessToken을 복사
화면 우측 상단 Authorize 버튼 클릭 후 복사한 토큰 입력
자물쇠 아이콘이 있는 /api/list/analysis 엔드포인트를 호출하여 HTTP 200이 정상적으로 떨어지는지 확인
/api/auth/refresh에 발급받았던 refreshToken을 전송하여 새로운 토큰 세트(Access/Refresh)가 교체(Rotation)되어 발급되는지 확인
📸 실행 결과 (선택)
tests/unit/test_auth_router.py Auth 도메인 11개 유닛 테스트 및 기존 49개 테스트 전체 통과 완료.
⚠️ 리뷰어에게 당부하는 점
프론트엔드 연동 주의: 기존에 frontend-client라는 더미 토큰 문구를 하드코딩해서 개발하시던 부분들이 실제 토큰 검증으로 변경되었습니다. 이번 PR을 Pull 받으신 후에는 꼭 로그인 로직을 먼저 태워서 실제 토큰을 발급받은 상태로 테스트를 진행해 주셔야 에러(401)가 나지 않습니다.
Rotation 로직 크로스 체크: Refresh Token 탈취를 막기 위해 엄격한 Rotation 로직을 태웠습니다. 프론트엔드 API(authApi.ts)에서 갱신 응답을 받을 때 새 refreshToken이 스토리지에 무사히 덮어쓰기 되는지 프론트 단에서 흐름을 한 번 더 체크해주시면 감사하겠습니다!
Originally authored by oosuhada as PR #72
🎯 작업 목적
기존의 하드코딩된 임시 인증(
Bearer frontend-client) 로직을 모두 걷어내고, AUTH 명세서(API-001~004)에 기반한 실제 JWT(Json Web Token) 로그인/회원가입 시스템을 구축하여 애플리케이션의 인증 보안과 세션 관리를 실질적으로 구동하기 위함입니다.✨ 주요 변경 사항
users및refresh_tokensDB 연동을 통한 회원가입, 로그인, 로그아웃 API 엔드포인트 구현POST /api/auth/refresh) 시, 보안 강화를 위해 기존 Refresh Token을 폐기하고 Access Token과 새로운 Refresh Token을 모두 재발급하는 순환 로직 구축app/core/auth.py에get_current_userDepends를 구현하여, 기존list/router.py등의 임시 인증 함수를 실제 JWT 서명 검증 로직으로 전면 교체useAuthStore스토어 구축 및 파편화되었던 로컬 스토리지 인증 키를cm-access-token,cm-refresh-token으로 일관되게 단일화🛠️ 리뷰 및 로컬 테스트 방법
Swagger UI (http://localhost:8000/docs) 테스트
POST /api/auth/register에서 이메일/비밀번호(8자 이상)로 계정 생성
POST /api/auth/login으로 로그인한 뒤 응답으로 받은 accessToken을 복사
화면 우측 상단 Authorize 버튼 클릭 후 복사한 토큰 입력
자물쇠 아이콘이 있는 /api/list/analysis 엔드포인트를 호출하여 HTTP 200이 정상적으로 떨어지는지 확인
/api/auth/refresh에 발급받았던 refreshToken을 전송하여 새로운 토큰 세트(Access/Refresh)가 교체(Rotation)되어 발급되는지 확인
📸 실행 결과 (선택)
tests/unit/test_auth_router.py Auth 도메인 11개 유닛 테스트 및 기존 49개 테스트 전체 통과 완료.
프론트엔드 연동 주의: 기존에 frontend-client라는 더미 토큰 문구를 하드코딩해서 개발하시던 부분들이 실제 토큰 검증으로 변경되었습니다. 이번 PR을 Pull 받으신 후에는 꼭 로그인 로직을 먼저 태워서 실제 토큰을 발급받은 상태로 테스트를 진행해 주셔야 에러(401)가 나지 않습니다.
Rotation 로직 크로스 체크: Refresh Token 탈취를 막기 위해 엄격한 Rotation 로직을 태웠습니다. 프론트엔드 API(authApi.ts)에서 갱신 응답을 받을 때 새 refreshToken이 스토리지에 무사히 덮어쓰기 되는지 프론트 단에서 흐름을 한 번 더 체크해주시면 감사하겠습니다!
Originally authored by oosuhada as PR #72