ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [cs] 세션 vs 토큰 vs 쿠키
    CS 2022. 12. 5. 03:07
    728x90

    https://youtu.be/tosLBcAX1vk

    위 영상을 보고 정리한 글입니다.

    세션 vs 토큰 vs 쿠키

     

    쿠키


    • 쿠키를 이용해서 서버는 브라우저에 데이터를 넣을 수 있다.
    • 사이트에 방문하면 브라우저는 서버에 요청을 보낸다.
    • 서버는 응답에 요청하는데, 응답에는 모든 데이터와 찾는 페이지 정보가 있다.
    • 브라우저에 쿠키를 저장한 뒤 해당 웹사이트에 방문할때마다 브라우저는 해당 쿠키도 요청과 함께 보낸다.
    • 쿠키는 도메인에 따라 제한된다. 예를 들어 유튜브가 준 쿠키는 유튜브에만 보내진다.
    • 서버가 정한 기간에 따라 유효기간이 존재한다.
    • 쿠키는 인증뿐만 아니라 여러가지 정보를 저장할 수 있다.
    💡
    쿠키는 세션 id를 전달하기 위한 매개체이다.

     

    세션


    세션을 이용한 로그인과정

    1. 세션db는 요청한 유저에 따라 별도의 세션 id를 생성한다.
    1. 세션 id는 쿠키를 통해 브라우저로 들어오고 저장된다.
    1. 서버는 들어오는 쿠키를 보고 세션 id와 함께 오는 쿠키를 확인한다.
    1. 세션 id로 세션 db를 확인하여 해당 id의 유저명을 확인하면 서버는 유저를 확인할 수 있다.

     

    stateless

    stateless : 서버로 가는 모든 요청이 이전 리퀘스트와 독립적으로 다뤄진다. 요청끼리 연결이 없고, 메모리가 없다.

    stateless는 서버에 요청을 할 때마다 누가 요청한 것인지 알려줘야 하기 때문에 세션을 사용한다.

     

    세션의 장단점

    • 장점
      • 서버는 로그인 된 유저의 모든 정보를 저장하기 때문에 새로운 기능을 추가할 수 있다.
    • 단점
      • 로그인한 유저들의 모든 세션 id를 db에 저장해야 한다.
      • db를 사고 유지해야 한다.
      • 유저가 늘어나면 db도 커져야한다.
        • 주로 redis 많이 사용함(빠르고 저렴)

     

    토큰


    세션 인증 방식은 인증요청이 들어올때마다 서버는 쿠키를 받아서 세션 id를 보고 세션 id와 일치하는 유저를 찾아야 다음 작업을 수행할 수 있다. 따라서 요청이 있을 때마다 db찾아야한다. 이를 해결하기 위해 jwt가 등장하게 되었다.

     

    JWT 특징

    1. jwt는 토큰 형식이다.
    1. jwt로 유저인증을 하면 세션 db를 가질 필요가 없고 서버는 유저 인증한다고 많은 일을 하지 않아도 된다. 그저 정보를 사인하고 전달하기만 하면 된다.
    1. jwt는 쿠키와 다르게 공간 제약이 없어서 엄청 길어도 된다.
    1. jwt는 암호화 되지 않아서 누구나 볼 수 있으므로 비밀정보를 jwt안에 두면 안된다.

     

    JWT를 이용한 로그인과정

    1. 유저를 인증하는데 필요한 정보를 토큰에 저장한다.
    1. 유저가 로그인하려면 토큰을 서버에 보내고, 서버는 사인이 유효한지 체크하거나 토큰이 조작되었는지 체크한다.
    1. 토큰이 유효하다면 서버는 유저로 인증한다.

     

    JWT 장단점

    • 장점
      • db를 따로 살 필요가 없다.

     

    • 단점
      • 생성된 토큰 추적하지 않음
      • 새로운 기능을 추가할 수 없다.
    728x90

    'CS' 카테고리의 다른 글

    [CS] 웹서버 vs WAS  (0) 2022.12.11
    DR 시스템  (1) 2022.12.05
    [cs] HTTPS  (0) 2022.12.05
    [cs] DNS  (0) 2022.12.05
    [cs] Process vs Thread  (0) 2022.12.05
Designed by Tistory.