TIL. JWT(JSON Web Token)

JWT란?

JSON Web Token의 약자로 전자 서명(어떤 데이터가 정말 그 사람의 것이 맞는지 보장해주는것) 된 속성 정보(Claim)를 JSON 데이터 구조로 표현한 토큰.

일반적으로 클라이언트와 서버, 서비스와 서비스 사이 통신 시 권한 인가(Authoriztion)를 위해 사용하는 토큰이다. URL에 대해 안전한 문자열로 구성되어 있기 때문에 HTTP 어디든 위치할 수 있다.

JWT 는 어떤 상황에서 사용될까?

다음과 같은 상황에서 JWT 가 유용하게 사용 될 수 있습니다:

  • 회원 인증:
    유저가 로그인을 하면, 서버는 유저의 정보를 기반한 토큰을 발급하여 유저에게 전달해준다. 그 후, 유저가 서버에 요청을 할 때마다 JWT를 포함하여 전달한다. 서버가 클라이언트에게 요청을 받을 때 마다, 해당 토큰이 유효하고 인증됐는지 검증을 하고, 유저가 요청한 작업에 권한이 있는지 확인한 후 작업을 처리한다.
  • 정보 교류:
    두 개체 사이에서 안정성있게 정보를 교환하기에 좋은 방법니다. 그 이유는, 정보가 서명(sign)이 되어 있기 때문에 정보를 보낸이가 바뀌진 않았는지, 정보가 도중에 조작되지 않았는지 검증할 수 있다.

JWT의 구조

🔹헤더(header)

Header는 토큰의 타입과 해시 암호화 알고리즘으로 구성되어 있다.

{
  "typ": "JWT",
  "alg": "HS256"
}
  • typ : 토큰의 타입
  • alg : 해시 알고리즘. 해시 알고리즘은 토큰을 검증 할 때 사용되는 signature 부분에서 사용된다.

🔹내용(payload)

  • 토큰에 담을 클레임(claim) 정보를 포함하고 있다.
  • 여기에 담는 정보의 한 '조각'을 클레임(claim)이라고 부르고, 이는 name/valu의 한 쌍으로 이뤄져있다. 토큰에는 여러개의 클레임을 넣을 수 있다.
    • 등록된 (registered) 클레임
    • 공개 (public) 클레임
    • 비공개 (private) 클레임

🔹서명(signature)

서명(signature)은 헤더의 인코딩값과, 정보의 인코딩값을 합친 후 scret key를 포함하여 암호하되어 있다.



📚 Reference

[JWT] JSON Web Token 소개 및 구조

JWT를 소개합니다. : TOAST Meetup

JWT (JSON Web Token) 이해하기와 활용 방안 - Opennaru, Inc.

좋은 웹페이지 즐겨찾기