피드로 돌아가기
The WebSocket Auth Problem: Cookies vs. Bearer Tokens
Dev.toDev.to
Security

Browser Native Cookie를 활용한 WebSocket 인증 최적화 및 보안 강화

The WebSocket Auth Problem: Cookies vs. Bearer Tokens

Nikhil Sharma2026년 6월 3일6intermediate

Context

WebSocket 연결은 HTTP GET Upgrade 요청으로 시작하나 브라우저 WebSocket API의 Custom Header 미지원으로 인해 Bearer Token 전달이 불가한 제약 존재. Query Parameter 사용 시 로그 노출 위험 및 First Message Auth 도입 시 연결 라이프사이클 복잡도 증가라는 설계적 딜레마 발생.

Technical Solution

  • Browser Native Cookie 메커니즘을 활용하여 WebSocket Handshake 시 인증 정보를 자동 전송하는 구조 설계
  • HTTP-only Cookie에 JWT를 저장하여 Client-side 코드 변경 없이 보안성과 편의성을 동시에 확보
  • Backend의 IncomingMessage 객체에서 raw cookie header를 직접 추출하는 Manual Parsing 로직 구현
  • jwt.verify 및 Schema Validation을 통한 토큰 유효성 검증 후 User ID를 추출하는 유틸리티 계층 분리
  • 인증 실패 시 4001 Unauthorized 상태 코드로 즉시 연결을 종료하는 Connection Interception 전략 적용
  • 인증 완료된 Socket만 메모리 스토어에 매핑하여 세션 기반의 메시지 핸들링 체계 구축

1. WebSocket API 사용 시 Custom Header 미지원을 고려하여 인증 전략 수립

2. 보안 요구사항에 따라 Token 노출 위험이 큰 Query Parameter 사용 지양

3. HTTP-only Cookie 설정을 통해 XSS 공격으로부터 JWT 보호

4. Backend 연결 수립 단계에서 즉각적인 인증 검증 및 4000번대 Close Code를 통한 명확한 연결 종료 처리

원문 읽기