본문 바로가기

네트워크

Session vs JWT

가장 많이 사용하는 인증의 방식으로 Session을 사용하는 방식과 JWT를 사용하는 방식이 있습니다.

Session

브라우저와 서버가 연결되어, 브라우저의 종료 시점까지를 세션이라고 합니다. 브라우저가 최초로 요청을 보내면, 서버에서는 클라이언트를 식별하기 위한 Session Id를 발급해 Response와 함께 보냅니다. 이후 클라이언트는 Session Id를 포함해 요청을 보내면 서버가 해당 유저를 Session Id로 식별하는 방식입니다.

null

JWT

구성

. 을 기준으로 구분되어 heaer, payload, signature로 구성 되어 있습니다.

null

  • header: typ와 alg라는 정보가 존재하는데 typ의 값은 JWT이고 alg signature를 해싱하기위한 알고리즘입니다.
{
    "alg": "HS256",
    "typ": JWT
}
  • payload: 토큰에서 사용할 조각들인 클레임이 존재합니다. 토큰의 목적에 따라 클레임이 달라집니다. registered claim에는 토큰 만료시간, 토큰 발급 날짜 등을 작성할 수 있습니다.
  • signature: 서명은 헤더의 alg에 정의된 알고리즘과 secret key 를 이용해 생성합니다다. Base64 URL-Safe 로 인코딩합니다.
  • null

null

Why Sesseion?

JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. [...] enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.

In this context, "claim" can be something like a 'command', a one-time authorization, or basically any other scenario that you can word as:

Hello Server B, Server A told me that I could , and here's the (cryptographic) proof.

joepie91's Ramblings

이 글에 따르면 JWT는 서버끼리 통신에서, 일회성 인가에 적합한 방식이라고 합니다. 따라서 진행하고 있는 프로젝트에서는 세션 방식을 채택하게 되었습니다.

'네트워크' 카테고리의 다른 글

DNS Lookup  (0) 2023.07.29
AWS VPC, Region과 Zone  (0) 2023.06.09
Restful API  (1) 2023.05.31
SSH  (0) 2023.05.23
OAuth 2.0  (0) 2023.03.16