8월 29일 TIL, 항해 16일차

코코·2023년 8월 30일
0

TIL(Today I Learned)

목록 보기
16/19
post-thumbnail

JWT란 무엇일까?

1. JWT란?

JWT(Json Web Token)란 JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token 이다. 일반적으로 쿠키 저장소를 사용하여 JWT를 저장한다.


2. JWT 사용 이유

(1) 서버가 1대인 경우

  • Session1 이 모든 Client의 로그인 정보를 소유하고 있다.

(2) 서버가 2대 이상인 경우

  • 서버의 대용량 트래픽 처리를 위해 서버 2대 이상 운영이 필요할 수 있다.

  • Session 마다 다른 Client 로그인 정보를 가지고 있을 수 있다.
    (예를 들어 Session1은 Client1, Client2, Client3 / Session2: Client4 / Session3: Client5, Client6)

  • 만약 Client 1의 로그인 정보를 가지고 있지 않은 Sever2 나 Server3 에 API 요청을 하게되면 문제가 발생할 수 있다.

    <해결 방법 >
    1) Sticky Session: Client 마다 요청 Server 고정
    2) 세션 저장소 생성하여 모든 세션을 저장

(3) 세션 저장소 생성

  • Session storage 가 모든 Client의 로그인 정보 소유하고 있기 때문에 모든 서버에서 모든 Client의 API 요청을 처리할 수 있다.

(4) JWT 사용

  • 로그인 정보를 Server 에 저장하지 않고, Client 에 로그인 정보를 JWT 로 암호화하여 저장 → JWT 통해 인증/인가

  • 모든 서버에서 동일한 Secret Key 소유한다.

  • Secret Key 통한 암호화 / 위조 검증 (복호화 시)

3. JWT 장/단점

(1) 장점

  • 동시 접속자가 많을 때 서버 측 부하 낮춤
  • Client, Sever 가 다른 도메인을 사용할 때
    예) 카카오 OAuth2 로그인 시 JWT Token 사용

(2) 단점

  • 구현의 복잡도 증가
  • JWT 에 담는 내용이 커질 수록 네트워크 비용 증가 (클라이언트 → 서버)
  • 기 생성된 JWT 를 일부만 만료시킬 방법이 없음
  • Secret key 유출 시 JWT 조작 가능
profile
Just Do It

0개의 댓글