인증과 사용자 세션

Dodam·2025년 8월 25일
0

인증과 사용자 세션

stateful session: 사용자 상태를 전부 서버에서 관리하고 특정 세션 쿠키를 사용해서
이 세션을 해당 클라이언트와 연결
→ 초기 구현 단계에서는 사용하기 쉽지만 규모가 커지면 복잡도 증가

예를 들어, 로그인 성공 시 웰컴 페이지를 렌더링해야 한다고 가정할 때
사용자가 로그인하면 서버에 세션 쿠키를 만들 수 있으나
다른 페이지로 이동하면 서버가 가지고 있는 세션 정보는 사라지고 사용자는 다시 로그인해야 함
→ 이런 경우 세션을 유지하기 위해 stateless session이 적합

stateless session은 세션 쿠키를 서버가 아닌 프론트엔드 쪽에 두고
새로운 요청을 보낼 때마다 사용자를 식별할 수 있는 정보를 함께 보내는 방식

즉, 로그인한 사용자가 백엔드에 요청을 보낼 때마다
인증 방식에 따라 인증에 필요한 정보를 HTTP 헤더 또는 쿠키로 보내는 것
서버는 이 인증 정보를 받아서 검증하고 사용자를 식별한 다음
권한에 따라 사용자가 요구한 서비스 또는 콘텐츠를 제공(JWT 기반 인증이 표준으로 사용됨)

JSON web token

인증에 참여하는 두 대상 간에 클레임을 안전하게 주고 받을 수 있는 방법으로,
base64 방식으로 인코딩된 세 개의 JSON 데이터를 하나로 연결한 것

JWT는 점(.)으로 연결된 세 부분의 데이터로 나눌 수 있는데

첫 번째 부분은 JWT 헤더, 두 번째 부분은 페이로드, 세 번째 부분은 JWT 토큰의 사인(즉 시그니처)


  1. JWT 헤더: 두 가지 핵심 정보가 있는데, 
하나는 토큰의 타입이고 다른 하나는 이 토큰을 사인할 때 사용한 알고리즘
  2. 페이로드: 사용자를 식별하기 위해 필요한 민감하지 않은 데이터들 포함

    (참고로 JWT 페이로드는 누구나 볼 수 있기 때문에 민감한 데이터는 절대 포함 X)
  3. 시그니처: 서버가 해당 인증 정보를 받으면 토큰을 검증하는데, 
이때 시그니처(사인)가 JWT의 안전성을 보장
profile
⏰ Good things take time

0개의 댓글