JWT토큰 인증처리 흐름

김영식·2023년 7월 28일
post-thumbnail

우선 유저 인증의 방식에는 토큰인증과 세션인증으로 나뉩니다.

토큰방식:
•사용자 인증 정보를 토큰(Token)으로 관리하는 방식입니다.
•로그인 성공 후 서버에서 사용자에게 토큰을 발급하고, 이후 모든 요청은 해당 토큰을 함께 전송하여 인증을 수행합니다.
•토큰은 일반적으로 JSON Web Token(JWT) 형태로 사용되며, 토큰 자체에 사용자 정보와 유효 기간 등이 포함되어 있습니다.
•서버는 토큰의 유효성을 확인하여 사용자를 인증하고 요청에 대한 권한 부여를 처리합니다.
•토큰은 클라이언트 측에 저장되어 세션 관리가 필요하지 않으므로 상태를 유지하지 않는 "무상태(Stateless)" 방식으로 작동합니다.

세션방식:
•사용자 인증 정보를 세션(Session)을 통해 관리하는 방식입니다.
•로그인 성공 시 서버에서 세션을 생성하고, 클라이언트 측에 고유한 세션 식별자(Session ID)를 쿠키 등을 통해 저장합니다.
•클라이언트는 요청 시 세션 ID를 서버에 전달하여 사용자 인증 상태를 확인합니다.
•서버는 세션 ID를 사용하여 사용자를 인증하고 요청에 대한 권한 부여를 처리합니다.
•세션 방식은 서버 측에서 세션 정보를 관리해야 하므로 "상태 유지(Stateful)" 방식으로 작동합니다. 이로 인해 서버에 저장 공간이 필요하며, 세션 관리를 위한 추가적인 작업이 필요할 수 있습니다.

각각의 장단점이 있지만 저희 프로젝트에선 Stateless의 이점을 보고 토큰인증방식을 선택하였습니다.

인증처리 흐름


1. 클라이언트에서 로그인 요청이 오고 인증에 성공하면 토큰을 생성해서 Response Header을 통해 전달합니다.
2. 클라이언트에선 토큰을 저장한 후 요청의 Request Header에 토큰을 담아 보냅니다.
3. 서버에선 토큰에 저장된 정보를 통해 유저를 검증하고 요청에 응답합니다.

1개의 댓글

comment-user-thumbnail
2023년 7월 28일

좋은 글 감사합니다.

답글 달기