Token과 Session

휘Bin·2023년 7월 20일
0
post-thumbnail

Session?

유저의 정보를 데이터베이스에 저장하고 상태를 유지하는 도구

Session 특징?

  • Session은 특수한 ID 값으로 구성되어있다.

  • Session은 서버에서 생성되며 클라이언트에서 쿠키를 통해 저장된다.

  • 클라이언트에서 요청을 보낼때 Session ID를 같이 보내면 현재 요청을 보내는 사용자가 누구인지 서버에서 알 수 있다.
    => 요청마다 매번 아이디와 비밀번호를 물어볼 필요 X

  • Session ID는 데이터베이스에 저장되기 때문에 요청이 있을 때마다 매번 데이터베이스를 확인해야함.
    => Session의 단점
    => Session ID를 데이터베이스에서 대조를 하기 전까지는 Session 값이 아무런 의미를 지니지 않음

  • 서버에서 데이터가 저장되기 때문에 클라이언트에 사용자 정보가 노출될 위험이 없다.
    => Session ID가 노출이 되더라도 데이터베이스와 대조를 할 수 없다면 무의미 무쓸모

  • 데이터베이스에 Session을 저장해야하기 때문에 Horizontal Scaling이 어렵다.
    => Horizontal Scaling : 수평적으로 서버를 늘리는 것 - 같은 서버를 여러개를 복제시켜 트래픽을 분산시키는 것
    => Session을 중복저장 해야 하기 때문에 어렵다.

Token?

유저의 정보를 Base64로 인코딩된 String 값에 저장하는 도구

Token의 특징?

  • Token은 Header, Payload, Signature로 구성되어 있고, Base64로 인코딩 되어있다.

  • Token은 서버에서 생되며 클라이언트에서 저장된다.

  • 클라이언트에서 요청을 보낼 때 Token ID를 같이 보내면 현재 요청을 보내는 사용자가 누구인지 서버에서 알 수 있다.(요청마다 매번 아이디와 비밀번호를 물어볼 필요 X)

  • Token은 데이터베이스에 저장되지 않고 Signature값을 이용해 검증할 수 있다. 따라서 검증할 때마다 데이터베이스를 매번 들여다볼 필요가 없다.
    => Session과 가장 큰 차이점 중 하나

  • 정보가 모두 토큰에 담겨있고 클라이언트에서 토큰을 저장하기 때문에 정보 유출의 위험이 있다.
    => 유출해도 위험이 없는 정보만 담기!

  • 데이터베이스가 필요없어 Horizontal Scaling이 쉽다.

Session 생성 방식

  • 로그인 시

Session 사용 방식

Token 생성 방식

Token 사용 방식

Session 과 Toekn 비교

profile
One-step, one-step, steadily growing developer

0개의 댓글

관련 채용 정보