ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ Network ] 세션(Session)과 토큰(Token)차이 & JWT
    공부 !/Computer Science 2022. 5. 15. 16:08
    반응형

    Session & Token

    HTTP 는 stateless 한 특성을 가지기 때문에 각 통신의 상태가 저장되지 않는다

    하지만 우리가 새 페이지를 요청할때마다 로그인을 해야한다면 엄청나게 불편할 것이다

    이러한 문제를 해결하기 위한 대표적인 방법 두 가지가 세션과 토큰이다

     

    유저가 로그인을 시도할때 서버상에서 일치하는 유저 정보를 찾았다면

    인증 확인의 표시로 세션과 토큰을 발급해준다 !

     

    웹 브라우저에서는 해당 세션과 토큰 정보를 저장해두고 새로운 request 를 보낼때마다

    인가를 위해 해당 세션과 토큰을 함께 보내게 된다


    세션과 토큰의 차이

    세션과 토큰 모두 동일한 목적을 가지지만 차이가 존재한다

    그 중 큰 차이점은 세션은 데이터베이스 서버에 저장된다는 것이고

    토큰은 클라이언트 측에서만 저장하다는 점이다 !


    JWT

    JWT 는 Json Web Token 의 약자로 모바일이나 웹의 사용자 인증을 위해 사용하는 암호화된 토큰을 의미한다

     

    JWT 장단점

    장점

    • 무상태성 ( stateless) , 확장성 : 토큰의 값만 알고 있다면 세션 스토리지가 필요하지 않다
    • 보안성 쿠키를 전달하지 않아도 되므로 쿠키를 사용함으로 발생하는 취약점이 사라진다
    • 어떤 디바이스나 도메인에서도 토큰만 유효하다면 요청이 정상적으로 처리된다

    단점

    • 길이가 길어질수록 JWT 토큰이 길어지게 되는데 길수록 네트워크 대역폭 낭비가 심해진다
    • 보안 JWT 는 기본적으로 Payload 에 대한 정보를 암호화하지 않기 때문에 중요데이터를 넣지 말아야한다

    ( 토큰에 담을 정보가 들어있는 Payload 의 담긴 정보 한 조각을 Claim 이라 부르고 name-value 의 한 쌍으로 이뤄져 있다 )

     

    JWT 는 회원 인증이나 정보 교류에서 유용하게 사용될 수 있다

    회원인증을 예로 설명하면 사용자가 로그인을 했을때 서버는 사용자의 정보를 기반으로한 토큰을 발급한다

    그 후 사용자가 서버에 요청할때마다 JWT 를 포함하여 전달한다

    서버는 클라이언트에서 요청을 받을때마다 해당 토큰이 유효한지 검증하고 확인하여 작업을 처리하게 된다 !

     

    서버에서는 사용자에 대한 세션을 유지할 필요가 ㅇ벗고 사용자가 요청을 했을때 토큰만 확인하면되므로

    세션 관리가 필요없어 서버 자원과 비용을 절감할 수 있다 !

    반응형

    댓글

Designed by SooJI