52. JWT

송민경's avatar
Apr 02, 2024
52. JWT

1. JWT(JSON Web Token)

  • 웹 토큰 기반의 인증 및 권한 부여 시스템을 구현하기 위한 인터넷 표준
  • 주로 사용자의 인증 정보를 안전하게 전달하고 확인하는 데 사용
 
  • 구성
- 헤더(Header) : JWT의 유형 및 사용하는 알고리즘을 지정
일반적으로 이 정보는 JSON 형식으로 인코딩
- 페이로드(Payload) : 실제로 전송되는 데이터 = 클레임(claim)
사용자 정보와 추가적인 메타데이터가 포함될 수 있음
JSON 형식으로 인코딩되어 있음
- 서명(Signature) : 헤더와 페이로드의 내용을 해싱한 값
서버 측에서 검증을 위해 사용
서명은 시크릿 키를 사용하여 생성
 
  • 특징
- 자가수용적(Self-contained)
필요한 모든 정보를 자체적으로 가지고 있기 때문에 별도의 저장 공간이 필요하지 않음
토큰을 전송할 때 추가적인 데이터베이스 조회를 필요로 하지 않음
- 간결하고 확장 가능한(Compact and Extensible)
JSON 형식을 사용 → 가볍고 간결하며, 필요에 따라 추가적인 클레임을 쉽게 추가할 수 있음
- 보안(Secure)
서명을 통해 토큰의 변조를 방지할 수 있음
HTTPS와 같은 안전한 프로토콜을 사용하여 통신할 경우 정보가 안전하게 전송
 

2. 사용해보기

  • PAYLOAD에 userId, username 담을
notion image
notion image
  • sha256으로 단방향 해쉬로 인코딩되어 있음
notion image
notion image
notion image
  • 서버가 검증
  • metacoding을 서버가 꼭 알아야 함 → 검증을 위해 사용
  • 다시 해쉬했을 때 같은 값이 나오는지 알 수 있음
notion image
  • 토큰 생성과 검증을 서버가 하면 RSA를 할 필요 없음
  • 반드시 정보에 시간(TIME)이라는 키값이 있어야 함
notion image
notion image
  • 해커가 시도해도 metacoding을 모르기 때문에 인증 실패
notion image
 
Share article
RSSPowered by inblog