[JWT]JWT란

Dex·2022년 12월 22일
0

JWT

목록 보기
1/1

JWT(Json Web Token)란?

  • Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다.
  • 일반적으로 클라이언트와 서버 사이에서 통신을 할 때 권한을 위해 사용하는 토큰이다.
  • 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달한다.

JWT 구성 요소

  • 헤더(header), 페이로드(payload), 서명(signature) 세 파트로 나뉘어져있다.
  • Json 형태이며 각 부분은 Base64Url로 인코딩 되어있다.
  • 각가의 부분을 이어주기 위해 . 구분자를 사용하여 구분한다.

헤더(header)

  • 어떠한 알고리즘으로 암호화 할 것인지, 어떠한 토큰을 사용할 것 인지에 대한 정보가 들어있다.

페이로드(payload)

  • 전달하려는 정보가 들어있는데 정보라는 것은 사용자 ID나 다른 데이터들을 말하며, 이것을 클레임이라고 한다.
  • 페이로드에 있는 정보는 수정 및 추가가 가능하다.
  • 노출이 되어있고 수정이 가능한 지점기 때문에 인증이 필요한 최소한의 정보만이 담겨져있다.

서명(signature)

  • JWT중에 가장 중요한 부분으로 헤더와 페이로드의 값을 BASE64Url로 인코딩한다.
  • 인코딩한 값을 발급해준 서버가 지정한 secret key로 암호화 시켜 토큰을 변조하기 어렵게 만들어준다.

JWT의 동작 원리

  1. 사용자가 ID와 Password를 입력하여 로그인 요청을 한다.
  2. 서버는 DB에 회원 정보가 있는 사용자인지 확인한다.
  3. 확인이 되면 서버는 로그인 요청 확인 후, secret key를 통해 토큰을 발급한다.
  4. 토큰을 클라이언트에게 전달한다.
  5. 서비스 요청과 권한을 확인하기 위해서 헤더에 데이터(JWT) 요청을 한다.
  6. 데이터를 확인하고 JWT에서 사용자 정보를 확인한다.
  7. 클라이언트 요청에 대한 응답과 요청한 데이터를 전달해준다.

Reference
Blog
Blog

profile
성장하는 개발자

0개의 댓글