Blog

[CS]35 세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요.

Author
Summary
Category
Study
Tags
CS
PinOnMain
Favorite
Memory
Memory Date
2023/11/01
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
4 more properties
세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요.
세션 기반 인증과 토큰 기반 인증은 사용자를 인증하고 권한을 부여하는 데 사용되는 두 가지 다른 접근 방식입니다.
세션 기반 인증은
기존의 인증 시스템은 세션 기반의 인증 방식으로, 서버 측에서 사용자들의 정보를 기억하고 있어야 합니다. 사용자들의 정보를 기억하기 위해서는 세션을 유지해야 하는데, 메모리나 디스크 또는 데이터베이스 등을 통해 관리합니다. 서버 기반의 인증 시스템은 클라이언트로부터 요청을 받으면, 클라이언트의 상태를 계속해서 유지하고 이 정보를 서비스에 이용하는데, 이러한 서버를 Sateful 서버라고 합니다. 소규모 시스템에서는 아직 많이 사용되고 있지만, 웹/앱 어플리케이션이 발달하게 되면서 서버를 확장하기가 어렵다는 등 다음과 같은 문제점을 가지고 있습니다. 사용자가 늘어나게 되면 더 많은 트래픽을 처리하기 위해 여러 프로세스를 돌리거나 컴퓨터를 추가하는 등 서버를 확장해야 합니다. 따라서 확장 시 세션을 분산시키는 시스템을 설계해야 하므로 복잡한 과정이 필요해 집니다. 쿠키는 단일 도메인 및 서브 도메인에서만 작동하도록 설계되어 있기 때문에 교차 출처 검증인 CORS 문제가 발생합니다. 따라서 쿠키를 여러 도메인에서 관리하는 것은 번거로우며 확장성의 문제가 발생합니다.
토큰 기반 인증은
인증받은 사용자들에게 토큰을 발급하고, 서버에 요청을 할 때 헤더에 토큰을 함께 보내도록 하여 유효성 검사를 합니다. 이러한 시스템에서는 더이상 사용자의 인증 정보를 서버나 세션에 유지하지 않고 클라이언트 측에서 들어오는 요청만으로 작업을 처리합니다. 즉, 서버 기반의 인증 시스템과 달리 상태를 유지하지 않으므로 Stateless한 구조를 갖습니다. 이러한 토큰 기반의 인증 방식을 통해 대표적으로 사용자가 로그인이 되어있는지 안되어있는지 신경쓰지 않고 손쉽게 시스템을 확장할 수 있는 장점이 있습니다. 또한 클라이언트가 서버로 요청을 보낼 때 더 이상 쿠키를 전달하지 않으므로, 쿠키 사용에 의한 약점을 보완하게 됩니다. 하지만 토큰 환경의 취약점이 존재할 수 있으므로 이에 대비해야 합니다. 또한 토큰 인증은 서버 기반 인증 시스템의 문제점 중 하나인 CORS를 해결할 수 있는데, 토큰을 사용한다면 토큰의 유효성 검사는 서버 내부에서 진행되기 때문에 어떤 디바이스, 어떤 도메인에서의 요청도 처리할 수 있습니다. 이런 구조를 통해 서버 측에서는 API만 다루도록 설계 할 수 있습니다. 최근에는 Json 포맷을 이용하는 JWT(Json Web Token)을 주로 사용됩니다.