Open freakFlow opened 4 months ago
공통점
: 둘 다 사용자를 인증하는 대표적인 방법입니다.차이점
: 사용자 인증 정보를, 어디서 관리하냐에 차이를 가지고 있습니다.세션 기반 인증
: 서버에서 사용자의 상태(세션)를 저장합니다.
👍 따라서 클라이언트보다 비교적 안전합니다. 👎 서버 메모리(자원)를 사용하기에 자원이 부족해질 수 있습니다. 또한 다양한 도메인과 플랫폼간의 인증 공유가 어렵습니다.
토큰 기반 인증
: 로그인시 JWT같은 토큰을 발급하고, 클라이언트에서 저장합니다. 서버에 요청시 Authorization(인가) 헤더를 통해 토큰을 전송하고, 서버에서 검증합니다.
👍 다양한 도메인, 플랫폼 인증에 유연합니다 👎 토큰 크기로인해 헤더 사이즈가 커져 네트워크 지연이 발생할 수 있습니다. 클라이언트에서 관리되기에, XSS CSRF같은 공격에 노출될 위험이 있습니다.
답변
세션 기반 인증과 토큰 기반 인증의 가장 큰 차이점은 사용자 인증의 정보를 어디에 저장하느냐에 있습니다. 세션 기반 인증은 사용자 인증 정보를 서버 측에서 관리하지만 토큰 기반 인증은 클라이언트 측에서 관리합니다. 토큰 기반 인증의 경우, 토큰의 위변조나 높은 헤더 사이즈 등에서 단점이 있지만 서버의 확장성에 유리합니다.