Home Session과 JWT
Post
Cancel

Session과 JWT

JWT와 세션

: 한 번 로그인을 진행한 이후로는 계속해서 로그인 상태가 되도록 상태를 유지시켜야 한다. 이때 사용하는 기술이 JWT와 세션이다.

입장권으로 비유하자면,

세션은

입장권에 쓰여있는 정보가 많지 않고, 고유번호 정도이기때문에 실제DB혹은 메모리에서 정보를 확인해서 로그인 시킨다.

JWT(Jason Web Token)는

입장권에 쓰여있는 정보가 많음, 입장권을 열어보고 로그인 시킨다.
그렇기때문에,
세션방식은 매번 값을 비교해야하기때문에 동시접속자가 많을 수록 오래 걸리고 무겁지만 토큰방식은 입장권만 보면 되기때문에 세션보다 처리가 빠르다.

  • JWT는 디코딩이 쉽기때문에 개인정보를 담으면 안된다.
  • 설정할 수 있는 시크릿키를 길고 어렵게 설정해야한다. (감으로 때려맞출수가 있음)
  • 유저의 JWT를 누군가가 훔쳐간다. -> token은 정지할 수 없는 거라 원래 설정된 유효기간까지 계속해서 사용할 수 있다.
  • 훔치기 어렵게 하기
  • 블랙리스트 만들기 (입장권을 매번 검사해야하기때문에 session 방식과 동일해서 토큰방식의 이점이 사라진다.)
  • JWT 유효기간을 짧게 한다. (예 5분), 매 5분마다 다시 토큰을 생성해야 하기때문에 refresh token을 따로 관리해야한다.
  • refresh token도 탈취가 가능해서, Refresh token rotation을 이용하는 게 좋다.
  • refresh token은 언제나 1회용인데, 이 refresh 토큰을 재사용하려고 하면 입장권을 발급해주지 않는다.

강의 : https://www.youtube.com/watch?v=XXseiON9CV0

This post is licensed under CC BY 4.0 by the author.

메모리

개발자 물경력 탈출 비밀 노하우