인증이 작동하는 방식: JWT vs Sessions 설명
Source: Dev.to
인증이란 무엇인가?
인증은 시스템에 접근하기 전에 사용자의 신원을 확인하는 과정입니다.
예를 들어 사용자가 웹사이트에 로그인할 때:
- 사용자가 자격 증명(이메일/비밀번호)을 입력합니다
- 서버가 해당 자격 증명을 검증합니다
- 서버가 향후 요청을 위해 사용자의 신원을 기억할 방법을 생성합니다
세 번째 단계에서 세션이나 JWT 토큰이 사용됩니다.
세션 기반 인증
세션 작동 방식
사용자가 로그인하면:
- 사용자가 로그인 자격 증명을 서버에 보냅니다.
- 서버가 이를 검증합니다.
- 서버가 서버 측에 세션을 생성합니다.
- 세션 ID가 쿠키 형태로 브라우저에 반환됩니다.
- 브라우저는 모든 요청에 이 쿠키를 함께 보냅니다.
서버는 세션 ID를 확인하여 사용자가 인증되었는지 판단합니다.
세션 인증의 장점
- 구현이 간단함
- 세션을 쉽게 폐기할 수 있음
- HTTP‑only 쿠키를 사용할 경우 보안성이 높음
- 프레임워크에서 잘 지원됨
제한 사항
- 세션은 서버 측 저장소가 필요함
- 분산 시스템에서 확장성이 어려움
- 서버 간 세션 동기화가 필요함
JWT 인증
JWT(JSON Web Token) 인증은 현대 API, 마이크로서비스 및 모바일 애플리케이션에서 흔히 사용됩니다.
서버에 세션 데이터를 저장하는 대신, JWT는 인증 정보를 토큰 자체에 포함합니다.
JWT란?
JWT는 클라이언트와 서버 간에 정보를 전송하기 위해 사용되는 작고 안전한 토큰입니다.
일반적인 JWT는 세 부분으로 구성됩니다:
- Header – 토큰 유형과 서명 알고리즘을 설명합니다.
- Payload – 클레임(예: 사용자 ID, 만료 시간)을 포함합니다.
- Signature – 토큰이 변조되지 않았음을 검증합니다.