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 인증서버를 두어 운영비용을 감축할 수 있지만 인스턴스의 리소스가 남는 상황에서는 세션만으로 사용자 정보를 다룰 수 있기 때문에 도입하지 않는 편이 비용적으로 이익입니다.
따라서 상황과 서비스의 규모에 대해서 고민하신 후 결정내리면 좋을 것 같습니다.
감사합니다.
'Web' 카테고리의 다른 글
트랜잭션후 메시지 전송을 보장하는 방법, How to guarantee to send events after Transaction (0) | 2024.04.22 |
---|---|
MSA에서 다른 서비스의 트랜잭션이 실패된다면 어떻게 해야할까?, Saga (0) | 2024.04.13 |
인텔리제이는 생각보다 더 많은 도움을 준다. (0) | 2023.01.25 |