[미니프로젝트] 미니프로젝트 회고

김동혁·2025년 12월 20일

미니프로젝트

목록 보기
16/16

프로젝트 개요 (Intro)

  • 프로젝트명: TechPost (테크 뉴스 & 개발 커뮤니티)

  • 한줄 소개: 여러 곳에 흩어진 기술 블로그 뉴스를 크롤링하여 한곳에서 모아보고, 개발자끼리 소통할 수 있는 커뮤니티 서비스

  • 개발 기간: 2025.12.5 - 2025.12.17

  • 개발 인원: 백엔드 7명 (본인 역할: 인증/인가 구현)

핵심 기능 구현 및 기술적 의사결정

JWT 인증 전략과 보안 강화

  • 문제: JWT는 한 번 발급되면 탈취되었을 때 서버에서 막을 방법이 없다는 단점 존재
  • 해결: RTR(Refresh Token Rotation) 방식을 도입
    • Access Token은 30분으로 짧게, Refresh Token은 2주로 길게 설정
    • Refresh Token은 보안을 위해 HttpOnly Cookie에 저장
    • Redis를 활용해 토큰의 생명주기를 관리하고, 재발급 시마다 Refresh Token도 교체하여 탈취 위험 최소화
  • 비대칭키(RS256) 대신 대칭키(HS256) 사용
    • 이유: 현재 단일 인증 서버 구조이므로 복잡한 키 관리보다 성능상 이점이 있는 HS256이 효율적이라 판단

Axios Interceptor를 활용한 사용자 경험 개선

  • 구현: 프론트엔드에서 Access Token 만료 시 401 에러를 감지하고, 자동으로 재발급(Reissue) 요청을 보낸 뒤 원래 요청을 재전송하는 로직 구현
  • 성과: 사용자는 토큰이 만료되어도 로그아웃되지 않고 끊김 없이 서비스를 이용 가능

트러블슈팅

[트러블슈팅] 순환참조
[트러블슈팅] 레디스 키 삭제 안됨

회고 KPT

Keep (좋았던 점, 유지할 점)

  • Redis를 도입하여 토큰 관리를 효율적으로 한 점
  • 프론트엔드와 백엔드의 역할을 명확히 분리하고 API 명세에 맞춰 협업한 경험

Problem (아쉬웠던 점)

  • 보안을 위해 Refresh Token을 쿠키에 넣었지만, 로컬 개발 환경(CORS 등)에서 쿠키 설정을 잡는 데 시간이 많이 소요됨
  • 소셜 로그인 시 토큰 전달 방식을 조금 더 안전한(쿠키 기반) 방식으로 구현하지 못한 점

Try (다음에 시도할 점)

  • Docker를 활용해 Redis와 애플리케이션을 배포해 보는 경험
  • 소셜 로그인 전달 방식을 Set-Cookie 방식으로 리팩토링

0개의 댓글