<TIL> 45. JWT?

YUJIN LEE·2023년 3월 6일
0

개발log

목록 보기
40/149

JWT?

JWT(JSON Web Token).
Json포맷을 이용해 사용자에 대한 속성을 저장하는 Claim 기반의 web token.
보통 쿠키 저장소에 담김

JWT 사용

로그인 정보를 server에 저장하지 않고, Client에 로그인 정보를 JWT로 암호화해 저장
-> JWT 통해 인증/인가

  • 모든 서버에 동일한 Secret Key
  • Secret Key를 통한 암호화/위조 검증(복호화 시)

JWT 장단점

장점

  • 동시 접속자가 많을 때 서버 측 부하 낮춤
  • client, server가 다른 도메인 사용할 때

단점

  • 구현의 복잡도 증가
  • JWWT에 담는 내용이 커질 수록 네트워크 비용 증가(클라이언트 -> 서버)
  • 기 생성된 JWT를 일부만 만료시킬 방법이 x
  • secret key 유출시 JWT조작 가능

JWT 사용 흐름

  1. Client가 username, password로 로그인
    a. 로그인 정보 -> JWT로 암호화(Secret Key 사용)
    b. JWT를 Client 응답에 전달
    c. Client에서 JWT 저장(쿠키, Local storage 등)

  2. Client에서 JWT 통해 인증방법
    a. JWT를 API 요청 시마다 Header에 포함
    b. Server
    1. Client가 전달한 JWT위조 여부 검증(Secret Key 사용)

    1. JWT 유효기간이 지나지 않았는지 검증
    2. 검증 성공시,
      a JWT -> 에서 사용자 정보를 가져와 확인

    JWT 구조

  • JWT는 누구나 평문으로 복호화 가능
  • 하지만 Secret Key가 없으면 JWT 수정 불가
    -> JWT는 Read only 데이터
profile
인정받는 개발자가 되고싶습니다.

0개의 댓글