Web

JWT, Json Web Token

mayleaf 2020. 3. 30. 23:01

 

 

JWT, Json Web Token에 대한 글입니다.

1. JWT의 정의와 구조

2. 장점이 무엇인지

3. 언제 사용하면 좋은지

 

다루는 내용은 크게 세 가지로 위 세가지 내용을 다룹니다.

 

JWT의 정의와 구조

JWT는 RFC 7519으로 토큰기반 인증 시스템을 구현한 것입니다.

 

이름에서 알 수 있듯이 JWT는 토큰 내부의 정보를 Json으로 저장하고 있습니다.

하지만 이 정보는 암호화 되어있고, URL에 공개되지 않기 때문에

적은 비용으로 안전하게 데이터를 전송할 수 있습니다.

 

JWT의 내부 구조는 HEADER, Payload, Signature로 구성되어있으며

이 정보들은 .(dot)을 통해서 구분됩니다.

 

좌측에는 JWT, 그리고 우측에는 JWT 내부의 정보가 담겨있습니다.

헤더: JWT를 복호화하는데에 필요한 정보,

페이로드: {

    JWT토큰인증과 관련된 "등록된 클레임"

    사용자 정보나 전달하고자 하는 정보가 담긴 "비공개 클레임"

    충돌이 방지되어야하는 "공개된 클레임"

},

시그니처: 해당 JWT가 올바른 토큰인지 확인하기 위한 값

이때 클레임은 JWT에서 하나의 (키,값) 페어를 의미합니다.

JWT의 장점

위의 구조에서 설명했듯이 JWT는 사용자정보를 암호화된 상태로 전달하기 때문에

세션을 이용하지 않고 사용자정보를 안전하게 확인할 수 있습니다.

그래서 세션을 관리하는 비용을 줄일 수 있다는 장점을 가집니다.

JWT의 도입 시점

JWT가 가지는 장점을 생각했을때

현재 아키텍쳐에서

1. 클러스터드 된 서버를 운영하고 있고 세션 동기화와 관련된 문제를 가지고 있을 때,

2. 세션 유지를 위한 비용이 병목이 될때,

3. 사용자 정보와 관련된 문제를 일관성 있게 해결하고 싶을때

JWT를 도입하는 것을 고려할 수 있을 것이라고 생각합니다.

 

결론

이 글을 읽으신 분은 JWT 도입에 대해서 고민하고 있거나, 혹은 JWT에 대해 궁금하신 분이시리라 생각합니다.

규모가 큰 서비스에서는 JWT 인증서버를 두어 운영비용을 감축할 수 있지만 인스턴스의 리소스가 남는 상황에서는 세션만으로 사용자 정보를 다룰 수 있기 때문에 도입하지 않는 편이 비용적으로 이익입니다.

 

따라서 상황과 서비스의 규모에 대해서 고민하신 후 결정내리면 좋을 것 같습니다.

 

감사합니다.