본문 바로가기
Flutter/Flutter Study

[Flutter] 세션(Session)과 토큰(Token)의 차이점 및 정의과 특징

by 왁왁s 2023. 5. 20.
Contents

     

     

    세션(Session)과 토큰(Token)은 사용자 인증과 상태 관리를 위한 보안 기술로 사용되지만 몇 가지 차이점이 있다. 아래에서 세션과 토큰의 정의와 그들 간의 차이를 비교해 보겠다.

     

     

    세션(Session)이란?

    정의: 

    세션서버 측에서 유지되는 상태 정보로서, 사용자 인증과 관련된 데이터를 저장하고 클라이언트와 서버 간의 연결을 유지한다. 

     

    특징: 

    • 서버 측에서 상태를 유지하고 관리한다. 
    • 클라이언트는 세션 ID를 통해 서버와 상호작용하고 세션 상태를 유지한다. 
    • 보안을 위해 세션 ID는 일반적으로 암호화되어 전송된다. 
    • 세션은 서버의 리소스를 사용하므로 서버 부하가 발생할 수 있다.
    • 세션 ID가 서버에 저장되기 때문에 사용자 정보 노출될 위험이 없으며, 요청을 보내는 사용자가 누구인지 서버에서 세션ID로 알 수가 있다.
    • 클라이언트로부터 서버에 요청을 할 때 세션ID를 함께 보내며, 요청이 있을 때마다 DB에 세션ID를 확인해야 한다.

    특징 정리:

    1. 서버 측에서 상태를 유지한다.

    -  세션은 서버 측에서 사용자의 상태 정보를 유지하고 관리한다. 클라이언트가 로그인하면 서버는 해당 사용자에 대한 세션을 생성하고, 세션 ID를 클라이언트에게 부여한다. 이후 클라이언트의 요청마다 세션 ID를 서버에 전송하여 상태를 유지한다.

     

    2. 쿠키를 통한 세션 관리

    - 세션 ID는 일반적으로 쿠키를 통해 클라이언트에 저장된다. 웹 브라우저는 세션 ID가 포함된 쿠키를 서버에 전송하여 세션을 식별한다.

     

    3. 서버 부하가 발생할 수 있다. 

    세션은 서버 측에서 상태를 유지하므로, 많은 수의 세션 데이터가 있는 경우 서버 부하가 증가할 수 있다.

     

    https://hackernoon.com/using-session-cookies-vs-jwt-for-authentication-sd2v3vci

     

     


    토큰(Token)이란?

    정의: 

    토큰클라이언트 측에서 유지되는 자체 포함형 데이터로서, 사용자 인증 및 권한 부여를 위한 정보를 포함한다.

     

    특징: 

    • 클라이언트 측에서 상태를 유지하고 관리한다. 
    • 서버는 토큰을 검증하여 사용자를 인증하고 권한을 부여한다. 
    • 토큰은 클라이언트의 로컬 저장소에 저장되어 서버와의 통신 시 사용된다. 
    • 토큰은 서버의 리소스를 사용하지 않으므로 서버 부하가 감소한다.

     

    특징 정리

    1. 클라이언트 측에서 상태를 유지한다.

    - 토큰은 클라이언트 측에 저장되어 상태를 유지한다. 사용자가 인증되면 서버는 클라이언트에게 토큰을 발급한다. 이후 클라이언트는 토큰을 요청의 인증 수단으로 사용하며, 서버는 토큰을 검증하여 필요한 정보를 추출한다.

     

    2. 클라이언트 로컬 저장소에 토큰 저장

    - 토큰은 클라이언트의 로컬 저장소에 저장된다. 주로 웹 애플리케이션에서는 브라우저의 로컬 스토리지나 세션 스토리지에 토큰을 저장한다. 모바일 애플리케이션에서는 안드로이드의 SharedPreferences나 iOS의 Keychain 등을 사용하여 토큰을 저장할 수 있다.

     

    3. 서버 부하의 감소

    - 토큰은 클라이언트 측에서 상태를 유지하고, 서버는 토큰을 검증하기만 하면 된다. 따라서 세션에 비해 서버 부하가 적게 발생한다.

     

     

    https://hackernoon.com/using-session-cookies-vs-jwt-for-authentication-sd2v3vci

     



    세션(Session)과 토큰(Token)의 차이점

    1. 위치와 상태 유지

    - 세션은 서버 측에서 상태를 유지하고, 클라이언트는 세션 ID를 통해 상태를 유지합니다.
    - 토큰은 클라이언트 측에서 상태를 유지하며, 서버는 토큰을 검증하여 필요한 정보를 추출합니다.

     

    2. 저장 방식

    - 세션은 보통 쿠키를 통해 세션 ID를 클라이언트에 저장합니다. 

    - 토큰은 로컬 저장소에 저장되고, 주로 웹 애플리케이션에서는 브라우저의 로컬 스토리지나 세션 스토리지에 저장됩니다.

     

    3. 서버 부하

    - 세션은 서버 측에서 상태를 유지하므로, 많은 수의 세션 데이터가 있는 경우 서버 부하가 증가할 수 있습니다.
    - 토큰은 클라이언트 측에서 상태를 유지하므로, 서버 부하가 상대적으로 적게 발생합니다.

     

    4. 유효기간과 인증 방식

    - 세션은 서버에서 유효기간을 설정하고, 클라이언트가 세션 ID를 통해 인증됩니다.

    - 토큰은 자체적으로 유효기간을 가지며, 만료된 토큰은 다시 사용할 수 없습니다. 토큰은 서명된 데이터로 인증을 수행합니다.


    5. 확장성과 플랫폼 호환성

    - 세션은 서버 측에서 상태를 유지하므로, 서버의 확장성에 영향을 줄 수 있습니다. 주로 웹 애플리케이션에서 사용되며, 브라우저가 세션 ID를 쿠키에 저장하여 서버에 전송하는 방식으로 동작합니다.
    - 토큰은 클라이언트 측에서 상태를 유지하고, 서버의 확장성에 영향을 덜 줍니다. 다양한 플랫폼과 서비스 간에 호환성을 가지며, RESTful API, 모바일 애플리케이션 등에서 사용될 수 있습니다.

     

    댓글