JWT (Json Web Token)

한호성·2022년 7월 17일
0

개념 및 기본구조

개념

JWT(JSON Web Token)란 ?
JWT 는 웹표준(RFC 7519) 으로서 두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 방식으로 정보를 안정성 있게 전달한다.

*cf) 자가 수용적 ( Self-contained) : JWT는 필요한 모든 정보를 자체적으로 갖고 있다 (JWT의 장점 중 하나) JWT 시스템에서 발급된 토큰은 기본정보, 전달할 정보, 검증할 수 있도록 해주는 Singnature 를 포함하고 있다.

기본구조

  • JWT는 Header, Payload, Signature 3부분으로 이루어지며 , JSON 형태인 각 부분은 Base64로 인코딩 되어 표현된다. 또한 각각의 부분을 이어 주기 위해 . 구분자를 사용하여 구분한다.
    (Base64는 암호화된 문자열이 아니고, 같은 문자열에 대해 항상 같은 인코딩 문자열을 반환한다)

1) Header

  • Header 는 토큰의 타입을 지정하고(JWT), Signature 해싱 알고리즘(HMAC-SHA256 or RSA)을 지정한다. 이 알고리즘은 토큰을 검증할 때 사용되는 signature부분에서 사용된다.

2) 정보 (Payload)

  • payload는 실제로 토큰에 담을 정보를 지니고 있다. (주로 유효기간, 클라이언트 고유ID) 포함된다.
  • key-value 형식으로 이루어진 한 쌍의 정보를 Clain 이라고 한다.

3) Signature
Signature 은 인코딩 된 Header 와 Payload를 더한 뒤 추가로 비밀키를 붙여 해싱하여 생성한다. Header 및 Payload 값은 단순 base64로 인코딩 된 값이기 때문에 해커가 복호화하고 조작할 수 있지만, Signature는 서버측 에서 관리하는 비밀키가 유출되지 않는 이상 복호화 할 수 없다. 그렇기 때문에 토큰의 위변조를 확인하는데 사용된다.

JWT 토큰의 장점

  1. 인증을 위한 별도의 저장소가 필요 없음 -> 분산 시스템에서의 확장성이 우수하다. (서버가 분산되어 있을 경우에도 인증이 가능하다.)
  2. 별도의 i/o 작업 없이 토큰을 decode해서 signature를 통해 위변조 파악 가능하다.
  3. 토큰 기반으로 다른 로그인 시스템에 접근 및 권한 공유가 가능하다. (토큰 서버 활용)

JWT 토큰의 단점

  1. 쿠키, 세션과 다르게 JWT는 토큰의 길이가 길어, 인증 요청이 많을수록 네트워크 부하가 심해진다.
  2. Payload 자체는 암호화되지 않기 때문에 유저의 중요한 정보는 담을 수 없다. (패스워드 등)
  3. 토큰을 탈취당하면 대처하기 어렵다. 토큰은 한 번 발급되면 유효기간이 만료될 때까지 계속 사용이 가능하다.
  4. 특정 사용자의 접속을 강제로 만료하기 어렵다. (쿠키/세션 기반 인증은 서버 단에서 쉽게 삭제할 수 있지만 토큰은 그게 안 됨)

Reference

https://velog.io/@whitebear/%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98-%ED%86%A0%ED%81%B0JWT-%ED%99%95%EC%8B%A4%ED%9E%88-%EC%95%8C%EA%B3%A0-%EA%B0%80%EA%B8%B0

https://velog.io/@dnjscksdn98/JWT-JSON-Web-Token-%EC%86%8C%EA%B0%9C-%EB%B0%8F-%EA%B5%AC%EC%A1%B0

profile
개발자 지망생입니다.

0개의 댓글