TIL_230922: JWT

Sol Lee·2023년 9월 22일
0

JWT(Json Web Token)

개인정보 등 중요한 정보를 전달하거나 인증할 때 사용되는 토큰. 신분증같은 것이라고 생각하면 될 듯?

강의에서 인증 방식에는 세션방식토큰방식이 있다고 하면서 (엄청)가볍게 설명했음

로그인 정보를 유지할 때 세션이라는 기술을 통해 개인정보를 서버에 저장하여 요청할 때 사용자정보를 판별함

위 경우 사용자가 늘어나면 서버에 저장해야하는 정보가 많아져 이후 DB나 서버의 확장이 필요해짐.

토큰의 경우는 토큰 자체에 발급자, 발급일, 만료일자, 권한범위 등의 정보를 가지고 있다.
(아이디,비밀번호등의 민감한 정보는 XX)

JWT 구성요소

JWT는 헤더(header), 페이로드(payload), 서명(signature) 세 파트로 나눠져 있다.

  • 헤더(header): signature를 해싱할 알고리즘과 토큰의 종류 정보
  • 페이로드(payload): 전달하려는 정보(토큰 발급자, 만료일자 등)
  • 서명(signature): 토큰을 인코딩하거나 유효성검사를 위한 암호화 코드

JWT 동작

서버에서 JWT를 발급한 후 저장과 관리는 클라이언트의 몫임.
서버는 요청이 들어온 JWT가 유효한지만 확인함.
서버측의 자원과 비용을 절감할 수 있지만 대부분 브라우저가 종료되면 만료되는 세션과 달리 유효기간이 비교적 긴 JWT가 유출되어 사용될 수 있음

이를 보완하기 위해 access tokenrefresh token 두가지 토큰을 사용함

JWT 동작 순서 예시

  1. 클라이언트 로그인 요청 → 서버 사용자 DB 확인
  2. 서버 access token, refresh token 발급(refresh token은 서버측 저장소에 저장) → 클라이언트 access token, refresh token 저장

access token이 만료되지 않았을 때

  1. 클라이언트 데이터 요청 with access token → 서버 access token 검증
  2. 서버 요청된 정보 응답 → 클라이언트

access token이 만료되었을 때(refresh token)

  1. 클라이언트 데이터 요청 with refresh token → 서버 별도로 저장된 refresh token과 비교
  2. 서버 새로운 access token 발급 → 클라이언트

참고
JWT란 무엇인가?
세션(Session)과 JWT

profile
직업: 개발자가 되고 싶은 오레오 집사

0개의 댓글