AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

쿠키 인증과 베어러 토큰 인증의 차이점과 사용 시기

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

Express.js 기반 웹 애플리케이션 개발자, 보안 및 인증 시스템 설계자

핵심 요약

  • 쿠키 인증res.cookie()로 생성된 쿠키를 자동으로 전송하여 세션 관리가 간편하나, httpOnlysecure 플래그 설정이 필수
  • 베어러 토큰은 클라이언트가 Authorization: Bearer ${token} 헤더에 토큰을 수동으로 추가해야 하며, SPA와 API 통합에 유리
  • 보안 고려사항으로 쿠키는 sameSite: 'Strict' 설정을 통해 CSRF 방어, 베어러 토큰은 HTTPS 강제 및 토큰 암호화 필요

섹션별 세부 요약

1. 쿠키 기반 인증

  • 서버에서 res.cookie('token', jwtToken, { httpOnly: true, secure: true, sameSite: 'Strict' })로 쿠키 생성
  • 클라이언트는 cookie-parser 미들웨어를 통해 req.cookies.token으로 토큰 접근 가능
  • 쿠키 자동 전송 조건: 도메인 일치, sameSite 설정, credentials: 'include' 사용, HTTPS 연결
  • 예시 코드: fetch('https://api.example.com/user', { credentials: 'include' })

2. 베어러 토큰 인증 (JWT)

  • 클라이언트가 localStorage에 토큰 저장 후 Authorization: Bearer ${token} 헤더에 명시적으로 추가
  • 서버는 req.headers.authorization에서 토큰 추출 (authHeader?.split(' ')[1])
  • 인증 헤더 설정 예시: fetch('/api/protected', { headers: { Authorization: Bearer ${token} } })

결론

  • 쿠키 인증은 전통적 웹 앱과 세션 기반 보안이 필요한 경우 적합, 베어러 토큰은 SPA 및 API 통합 시 유리
  • 보안 강화를 위해 쿠키는 secure: truehttpOnly 설정, 베어러 토큰은 HTTPS 강제 및 JWT 암호화 적용 필수
  • 프론트엔드 기술 스택에 따라 자동 전송 vs 수동 전송 방식 선택이 중요