JMT란 무엇일까

zoe·2024년 6월 14일
0

개발용어

목록 보기
5/12
post-thumbnail

JWT(JSON Web Token) 란?

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

JWT 의 구성

JWT 는 .을 구분자로, 헤더(Header), 페이로드(Payload), 서명(Signature) 세 파트로 나눠져 있고, 아래와 같은 형태로 구성되어 있다.

JWT 에서 사용할 타입(대게 "JWT")과 해시 알고리즘(예: HMAC SHA256 또는 RSA)의 종류가 담겨있다.

Payload

토큰에서 사용할 정보의 조각들인 Claim 이 담겨있다. (실제로 JWT를 통해서 알 수 있는 데이터)

즉, 서버와 클라이언트가 주고받는 시스템에서실제로 사용될 정보에 대한 내용을 담고 있다.

key-value 형식으로 이루어진 한 쌍의 정보를 Claim이라고 칭한다.

페이로드는 3 가지 Claim으로 나뉘는데, Registered claims, Public claims, Private claims 이다.

  • Registered claims : 미리 정의된 클레임
  • Public claims : 사용자가 정의할 수 있는 클레임 공개용 정보 전달을 위해 사용
  • Private claims : 해당하는 당사자들 간에 정보를 공유하기 위해 만들어진 사용자 지정 클레임. 외부에 공개되도 상관없지만 해당 유저를 특정할 수 있는 정보들을 담는다.

Signature

헤더의 인코딩된 버전, 페이로드의 인코딩된 버전, 서버가 갖고 있는 유일한 key 값을 합친 것을 헤더에서 정의한 알고리즘으로 암호화 한다.

Header와 Payload는 단순히 인코딩된 값이기 때문에 제 3자가 복호화 및 조작할 수 있지만, Signature는 서버 측에서 관리하는 비밀키가 유출되지 않는 이상 복호화할 수 없다. 따라서 Signature는 토큰의 위변조 여부를 확인하는데 사용된다.

JWT 장점

  1. 자체적으로 필요한 정보를 포함하고 있기 때문에, 추가적인 DB 조회 없이 토큰만으로 사용자의 인증 및 권한을 확인할 수 있다.

  2. Header와 Payload를 가지고 Signature를 생성하므로 데이터 위변조를 막을 수 있다.

  3. 클라이언트 인증 정보를 저장하는 세션과 다르게, 서버는 무상태(StateLess)가 되어 서버 확장성이 우수해질 수 있다.

JWT 단점

  1. 토큰 자체에 정보를 담고 있으므로 양날의 검이 될 수 있다.

  2. 토큰의 Payload에 3종류의 클레임을 저장하기 때문에, 정보가 많아질수록 토큰의 길이
    가 늘어나 네트워크에 부하를 줄 수 있다.

  3. Stateless 특징을 가지고 있어, 토큰은 클라이언트 측에서 관리하고 저장하기 때문에, 토큰 자체를 탈취당하면 대처가 어렵다는 점이 있다.

참고 출처:
https://inpa.tistory.com/entry/WEB-📚-JWTjson-web-token-란-💯-정리#jwt_json_web_token_이란 [Inpa Dev 👨‍💻:티스토리]
https://jwt.io/

profile
코당탕탕 성장기

0개의 댓글