TIL 2023-11-13 Session과 JWT 뭐가 더 좋을까?

2023. 11. 13. 21:17TIL
목차
  1. Session과 JWT 너네 둘이 궁금하다.
  2. Session
  3. JWT
  4. Session과 JWT의 주요 차이점
  5. Session과 JWT의 인증 만료
  6. JWT 블랙리스트?

Session과 JWT 너네 둘이 궁금하다.

Session과 JWT를 배우며, 둘의 차이점과 어떤 방식이 더 좋을까? 라는 생각으로 접근을 했다.

 

우선 결론부터 말하자면 둘 다 장단점이 있어서 뭐가 더 좋다 라고 말하기 힘든 것이다.

 

Session

  • 정의
    • 서버에서 일정시간 동안 클라이언트의 상태를 유지하기 위해 사용된다.
    • 서버는 클라이언트에게 세션 ID를 제공하고, 이 ID를 통해 사용자를 식별한다.
  • 저장위치
    • 서버에 저장 된다. 클라이언트는 보통 세션 ID를 쿠키에 저장해서 서버와 통신할 때 사용한다.

 

JWT

  • 정의
    • JWT(Jason Web Token)  
    • JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token 이다.
    • 즉 토큰의 한 종류이다.
  • 저장위치
    • 클라이언트(쿠키,로컬 스토리지, 세션 스토리지 등)에 저장된다. 서버는 이 토큰을 검증하여 사용자를 인증한다.

 

Session과 JWT의 주요 차이점

  • 저장위치
    • 세션은 서버에 저장된다.
    • JWT는 클라이언트에 저장된다.
  • 상태관리
    • 세션은 상태 저장(Stateful) 방식을 사용한다.
    • JWT는 상태 비저장(Stateless) 방식을 사용한다.

 

JWT의 쓰는 이유를 말해보라고 하면 이렇게 대답한다.

 

서버가 여러대일 때 각 Session 마다 다른 Client 정보를 가지고 있다.

Session1: Client1, Client2

Session2: Client3

Session3: null

 

만약 Client1이 Session2에 API 요청을 하게 된다면 문제가 발생할 것이다.

그래서 JWT를 쓴다.

 

 

 

라고 말하면 아직 JWT만 공부해서 세션을 잘 모르는 것일 수도 있다.

 

Session을 담는 Storage를 만들고 각 서버가 Storage에서 세션을 받아오면 된다.

 

 

 

JWT는 이런 방식을 사용한다

 

각 서버에 똑같은 Secret Key를 가지고 Client의 정보를 JWT로 인증,인가

 

로그인 정보를 Server에 저장하지 않고 Client의 정보를 JWT로 암호화하여 클라이언트측에서 저장한다.

 

 

서버에 저장.. 클라이언트에 저장...

 

뭔가 차이점이 보이기 시작한다. Secret Key... Session Storage

 

인증 만료에 대한 차이점...이 보인다.

 

Session과 JWT의 인증 만료

 

우선 둘 다 만료 시간을 설정할 수 있다.

근데 서버와 클라이언트에 저장하는 여기서 차이가 생긴다.

 

Session

세션은 특정 사용자에 대한 인증을 만료 시키고 싶을 때 세션 저장소에서 해당 사용자의 세션을 지우면 된다.

 

JWT

JWT는 토큰 만료 시간 전에 인증을 만료하게 할 수 없다.

 

Secret Key를 바꾸면 인증이 만료되지 않나? 라고 생각하면 위험하다

Secret Key를 변경하는 것은 모든 토큰을 무효화 하는 극단적인 방법이다.

실제로 이런 방법을 쓴다..? 오우... 하지 마라...

 

대신 JWT 블랙리스트 라는 방법이 있다.

 

JWT 블랙리스트?

 

JWT 블랙 리스트를 사용해서 토큰이 들어올 때 서버에서 JWT 블랙리스트에 해당 토큰이 있는지 검사하면 된다.

 

근데 이 방법엔 단점이 있다

 

블랙리스트가 많아질 수록 서버의 부하가 심해진다.

사용자가 많아지고 블랙리스트가 늘어날 수록 더 그렇다

 

이걸 해결할 대표적인 방법이 있다는데..

 

로드 밸런서에 캐시를 두거나

중간에 인메모리 캐시 서버를 두는 것이라고 한다

 

위 둘은 아직 잘 모르기에 패스

 

방법이 여러가지 있는데 상황에 맞게 써야한다.

저작자표시 (새창열림)

'TIL' 카테고리의 다른 글

TIL 2023-11-16 RestTemplate 짧은 설명  (1) 2023.11.16
TIL 2023-11-15 JWT 검증 과정에서 일어나는 문제 해결 과정  (1) 2023.11.15
TIL 2023-11-10 HttpServlet 및 쿠키 처리  (0) 2023.11.10
TIL 2023-11-09 nullable = false 설정 했는데도 빈 값이 들어갈 때  (0) 2023.11.09
TIL 2023-11-08 영속성 컨텍스트, Jpa의 트랜잭션  (0) 2023.11.08
  1. Session과 JWT 너네 둘이 궁금하다.
  2. Session
  3. JWT
  4. Session과 JWT의 주요 차이점
  5. Session과 JWT의 인증 만료
  6. JWT 블랙리스트?
'TIL' 카테고리의 다른 글
  • TIL 2023-11-16 RestTemplate 짧은 설명
  • TIL 2023-11-15 JWT 검증 과정에서 일어나는 문제 해결 과정
  • TIL 2023-11-10 HttpServlet 및 쿠키 처리
  • TIL 2023-11-09 nullable = false 설정 했는데도 빈 값이 들어갈 때
wonow_
wonow_
꾸준히 성장하는 개발자 WONOW 입니다. 🤗
wonow_
wonow_
wonow_
전체
오늘
어제
  • 분류 전체보기
    • Language
      • JAVA
    • TIL
    • 코딩테스트
      • 프로그래머스
      • 백준
    • 프로젝트
      • JAVA
      • Spring
    • 기타
    • ERROR
      • Spring
    • CS
      • 알고리즘
      • DB
      • Kafka
    • 잡담
    • 활동
      • 척척박사

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래머스
  • 공부열심히하자
  • 티스토리챌린지
  • 홀짝 구분하기
  • 문자열 붙여서 출력하기
  • 티스토리 꾸미기
  • 문자열 돌리기
  • 나는바봉가봉가
  • 오블완

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
wonow_
TIL 2023-11-13 Session과 JWT 뭐가 더 좋을까?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.