JWT(Json Web Token)

백우진·2023년 9월 10일
0

JWT에 대해서 정말 많이 들어보고 사용하고 있지만, 모르는 부분이 많을 것으로 생각되어 글로 한번 정리를 해보고자 한다.

JWT?

JWT(Json Web Token)은 웹에서 사용하는 JSON형식의 토큰에 대한 표준 규격으로 사용자 인증(authentication), 인가(authorization)정보를 서버, 클라이언트간에 주고 받기 위해 사용한다.


JWT 구조

사진과 같이 해더(header), 페이로드(payload), 서명(signature)로 나누어지며 각 구역은 .기호를 통해 구분된다.

1. 해더(header)

토큰의 유형과 서명 알고리즘에 명시

2. 페이로드(payLoad)

Claim 이라 불리는 사용자의 인증/인가 정보
노출과 수정이 가능한 지점이기에 인증에 필요한 최소한의 정보만을 담아야 한다.

3. 서명(signature)

해더와 페이로드가 비밀키로 서명되어 저장


JWT 예시

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Indvb2ppbiIsImlhdCI6MTUxNjIzOTAyMn0.GXtEgp14wdK51xxRnSwSop5N7E4nCiFmw7v7HjmWIF8

다음과 같은 JWT를 한번 Decode해서 확인해보면

이렇게 해더페이로드를 확인 할 수 있다.
JWT에서 자주 사용하는 JSON키 이름은 다음과 같다.

자주 사용하는 JSON KEY

  1. sub : 키 인증 주체(subject)
  2. iss : 키 인증 발급처
  3. typ : 토큰의 유형(type)
  4. alg : 서명 알고리즘(algorithm)
  5. iat : 발급 시각(issued at)
  6. exp : 만료 시작(expiration time)

JWT 장점과 한계점

장점

JWT등장 이전에는 쿠키, 세션을 이용한 사용자 인증을 많이 사용했지만 JWT 등장 이후에는 JWT를 많이 사용하는데 이는

확장성에 가장 큰 이유가 있다. JWT는 토큰 자체에 사용자의 정보가 저장되어 서버 입장에서는 토큰만 검증해주면 된다.

따라서 JWT를 사용할 때는 사용자가 늘더라도 사용자 인증을 위해서 추가로 투자해야하는 인프라 비용 절감 장점이 있다.

한계점

규모가 있는 서비스에서 사용자 인증 용도로 JWT를 사용하기에는 한계가 있다. 예를들면 현재 로그인된 사용자 정보를 제공하거나, 특정 기기에서의 로그인 같은 기능은 구현하기가 어려운 것이다.

주의점

JWT데이터는 누구나 쉽게 풀어서 열람이 가능하기에, 민감한 사용한 정보를 토큰에 저장하면 큰 보안 문제가 될 수 있어 이부분에 대해서 주의가 필요하다.

profile
안녕하세요.

0개의 댓글