[JWT] Json Web Token

keymu·2025년 1월 14일
0
post-thumbnail

Spring에서 Session 기반의 인증하는 법을 공부했을 때, session library가 cookie에 저장되어 전달된다. 그러나, 모바일 앱일 경우에는 그런 인증 방식 못 쓴다. 이럴 때 쓰는 다른 웹 authentication 방식으로 JWT가 있다.

JWT

  • RFC 7519 표준으로 정의된 방식
  • JSON format을 Base 64로 encode해서 만든다
  • payload에 담겨있는 것 = Claim (사용자에 대한 property)
  • signature : 검증을 위해 필요 (header + payload 인코딩)

signature:

HMACSHA256 (
  	base64UrlEncode(header) + "." +
  	base64UrlEncode(payload),
	your-256-bit-secret
) 
  • secret: 서버만 가지고 있는 인증을 위한 비밀키

JWT 인증 절차

  1. username, password 인증시도
  2. 인증 확인 - DB 연동
  3. JWT 토큰 (서버가) 발급
  4. JWT를 response header에 담아 보냄
  5. Client는 JWT를 저장 (localStorage, cookie에)
  6. 다음 요청부터 저장된 JWT를 request header의 Authorization 값에 보냄
  7. 요청에 담긴 JWT (서버가) 검증
  8. 검증 성공 시, 인증 처리(session 기반 x, but 여기서 session이 생겨 인증정보 저장됨), 권한 부여
  9. 인증 후, 요청처리 (buisness logic), response (response 후 session 삭제)
profile
Junior Backend Developer

0개의 댓글