jwt 도입기 (1) - JWT 개념

김성수·2022년 11월 27일
0

JWT + Spring Security

목록 보기
1/3

JWT(Java Web Token)란?

정의

URL-safe 모드로 전자서명된 JSON

JWT 인증 방법

서버와 클라이언트 간 정보를 주고 받을 때, HTTP Request Header에 Json 토큰을 넣은 후 서버는 별도의 인증 과정 없이 Header에 포함되어 있는 JWT 정보를 통해 인증함

JWT 서명 방법

HMAC 알고리즘을 사용하여 비밀키 또는 RSA를 이용한 Public Key/Private Key 쌍으로 서명가능하다

JWT 구성

header , payload, sinature

  1. Header : 토큰 타입(JWT로 표시), 해시 암호화 알고리즘(HMAC 등)
  2. Payload : 다수의 Claim(정보의 한조각, name/value로 구성)
  3. Signature

JWT 프로세스

  1. 사용자가 ID와 Password를 입력하여 로그인을 시도
  2. Server는 요청을 확인하고 Scret key를 통해 Access token을 발급
  3. JWT를 clinet에 전달
  4. Client에서 API를 요청할 때마다 Client가 Authentication Header에 Access token을 담아서 보냄
  5. Server는 JWT Sinature를 체크하고 Payload로부터 사용자 정보를 확인
  6. Client의 요청 서비스를 처리(ex. 데이터를 전송해줌)

JWT 장점과 단점

JWT 장점

주요 이점: 사용자 인증에 필요한 모든 정보는 토큰 자체에 포함하기 떄문에 별도의 인증 저장소가 필요없다

  • URL 파라미터와 헤더로 사용
  • 수평 스케일이 용이
  • 디버깅 및 관리가 용이
  • 트래픽에 대한 부담이 낮음
  • Rest 서비스로 제공 가능
  • 내장된 만료
  • 독립적인 JWT

JWT 단점

  • 토큰은 client 위치에 저장되어 DB의 사용자 정보를 조작하더라도 토큰에 직접 변경한 정보를 적용할 수 없다
  • 더 많은 필드가 추가되면 토큰이 커질 수 있다
  • stateless App에서 토큰은 거의 모든 요청에 대해 전송되므로 데이터 트래픽 크기에 영향을 미칠 수 있다

JWT가 유용한 상황

  1. 회원인증
  2. 정보 교류
  3. MSA 환경(MSA 서비스 인증, 인가)

참고 사이트)
http://www.opennaru.com/opennaru-blog/jwt-json-web-token/

profile
백엔드 개발자

0개의 댓글