카테고리 없음

로그인 방식을 세션 기반에서 토큰 기반으로 변경하는 이유 241230

mezzanineX 2024. 12. 30. 22:33

q1: 로그인 방식을 세션 기반에서 토큰 기반으로 변경하는 이유

a1:

로그인 시 세션 기반에서 토큰 기반으로 변경하는 것인증 방식의 변화로, 주로 웹 애플리케이션에서 사용자의 로그인 상태를 관리하는 방식이 달라지는 것을 의미합니다. 두 방식의 차이점은 주로 인증 정보 저장 위치인증 관리 방법에 있습니다.

1. 세션 기반 인증 (Session-based Authentication)
세션은 서버에서 사용자의 로그인 정보를 저장하는 방식입니다.
사용자가 로그인하면 서버는 세션 ID를 생성하여 클라이언트에게 전달하고, 클라이언트는 이 세션 ID를 쿠키(cookie) 형태로 저장합니다.
클라이언트가 요청을 보낼 때마다 이 세션 ID를 서버에 전달하여, 서버가 해당 사용자의 세션 정보를 확인하고 인증을 처리합니다.
서버에 인증 정보 저장: 세션 정보는 서버에 저장되며, 서버가 클라이언트의 인증 상태를 추적합니다.

2. 토큰 기반 인증 (Token-based Authentication)
토큰은 서버에서 사용자의 인증 정보를 포함한 암호화된 문자열을 생성하여 클라이언트에 전달하고, 클라이언트는 이 토큰을 저장하여 이후 요청 시 사용합니다.
• 일반적으로 사용되는 토큰은 **JWT(JSON Web Token)**입니다.
클라이언트에 인증 정보 저장: 인증 토큰은 클라이언트에 저장되고(주로 로컬 스토리지 또는 세션 스토리지), 서버는 요청이 올 때마다 이 토큰을 검증하여 인증을 처리합니다.
서버 부담 감소: 토큰 기반 인증에서는 서버가 사용자 정보를 세션에 저장하지 않기 때문에 서버의 부하가 줄어듭니다. 서버는 토큰을 검증만 하면 되므로, 서버 간의 분산 처리가 용이하고 스케일링에 유리합니다.

세션 기반에서 토큰 기반으로 변경하는 이유
1. 확장성: 토큰 기반 인증은 서버 간 상태 공유가 필요 없어서, 여러 서버를 운영하는 분산 시스템에서 유리합니다. 반면, 세션 기반 인증은 각 서버가 세션 정보를 저장해야 하므로 세션 공유 문제가 발생할 수 있습니다.
2. 클라이언트 상태 유지: 클라이언트가 직접 토큰을 관리하기 때문에 서버에 매번 요청할 때마다 인증 정보를 조회할 필요가 없습니다. 이로 인해 서버 측의 부하가 감소합니다.
3. API 인증: RESTful API와 같은 비동기 요청 처리에서는 토큰 기반 인증이 많이 사용됩니다. 세션 기반 방식은 페이지 리로드가 필요한 구조에 적합한 반면, 토큰 기반 인증은 모바일 애플리케이션이나 SPA(Single Page Application)에서 더욱 효율적입니다.
4. 보안 강화: JWT와 같은 토큰은 서명(Signing) 및 암호화(Encryption) 처리가 가능하여 보안성을 강화할 수 있습니다. 토큰에는 유효 기간을 설정할 수 있어 세션 타임아웃과 유사한 기능을 제공할 수 있습니다.

따라서, 세션 기반 인증에서 토큰 기반 인증으로 변경하면 시스템의 확장성, 보안성, 유연성을 높이는 데 도움이 됩니다.

반응형