용도

기본적으로 사용자는 로그인을 통해서 인증을 받고, 필요한 권한을 인가받는다.

그런데, 요청 API와 Body만 알고 있다면, 로그인을 하지 않아도 서버에 요청을 보낼 수 있을 것이다.

⇒ JWT를 사용해서 현재 요청을 보낸 사용자가 로그인을 한 사용자인지 확인하는 과정이 필요하다 (즉, 인증에 사용됨)

플로우

  1. 사용자가 ID/PWD를 보내면, 이를 확인하여 로그인 처리
  2. 사용자 로그인 성공 시, 응답으로 JWT 토큰 발급
  3. 사용자는 JWT 토큰과 함께 요청을 보내고, 이를 활용하여 사용자 로그인 여부 확인

구조

헤더 (header)

{
  "alg": "HS256",
  "typ": "JWT"
}

페이로드 (payload)

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}
  1. registered claim