2026-02-01

오늘의 학습: OAuth2 인증 흐름과 토큰 보안

핵심 요약

OAuth2 기반 소셜 로그인(GitHub 등)은 프론트엔드 → 백엔드 → 외부 인증 서버의 다단계 리다이렉트 흐름을 따릅니다. 브라우저 주소창(URL)은 기록이 남아 보안에 취약하므로, 민감한 토큰 대신 일회용 임시 키(Auth Code)를 사용하여 안전하게 토큰을 교환합니다.

주요 포인트

  • 리다이렉트 vs API 호출: 소셜 로그인 시 window.location.href로 브라우저를 이동시키는 것은 axios 같은 API 호출이 아니라, 사용자를 외부 인증 서버로 직접 보내는 것임.
  • 임시 Key의 역할: 인증 완료 후 URL로 전달되는 Key는 “한 번만 사용 가능, 곧 만료”되는 일회성 코드로, 실제 Access Token을 URL에 노출하지 않기 위한 보안 장치.
  • URL 노출의 위험성: URL은 브라우저 히스토리, 서버 로그, 네트워크 로그에 기록되므로 민감 정보(토큰)를 직접 담으면 탈취 위험이 높음.
  • 토큰 교환 시 POST 사용 이유:
    • GET은 파라미터가 URL에 노출되어 보안에 취약
    • 임시 Key는 사용 후 폐기(상태 변경)되므로 의미상 POST가 적합
  • 백엔드 토큰과 외부 토큰의 분리: GitHub 등 외부 서버의 토큰과 별개로, 우리 서버용 Access Token을 따로 발급하여 내부 API 인증에 사용함.
  • DB 저장 시점: 백엔드가 외부 서버에서 사용자 정보를 받아온 직후, 프론트에 응답하기 전에 DB에 저장/갱신이 완료됨.

결론

OAuth2의 핵심은 “민감한 토큰을 안전하게 교환하는 것”입니다. 일회용 Key 패턴을 이해하면 다른 인증 흐름(카카오, 구글 등)에도 동일하게 적용할 수 있습니다.

results matching ""

    No results matching ""