JWT 이란?

김상선·2022년 5월 16일
0

정의

JWT : JSON Web Token

JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA or ECDSA.

JWT는 당사자간에 정보를 JSON 객체로 안전하게 전송하기 위한 컴팩트하고 독립적인 방법의 개방형 표준 (RFC 7519)이라고 쓰여있다.

토큰 기반 인증이란 사용자가 자신의 아이덴티티를 확인하고 고유한 액세스 토큰을 받을 수 있는 프로토콜을 말한다. JWT로 한번 인증된 사용자(Single Sign On)는 토큰의 유효기간동안 동일한 웹페이지나 앱 등 해당 토큰으로 보호를 받는 리소스로 돌아갈 때마다 자격 증명을 다시 입력할 필요 없이 액세스할 수 있다.

또한 JWT는 정보를 안전하게 교환할 수 있다. 공개 / 개인 키 쌍을 사용하여 JWT에 서명 할 수 있으므로 발신자가 자신이 누구인지 확인할 수 있다. 또한 헤더와 페이로드를 사용하여 서명을 계산하므로 내용이 변경되지 않았는지 확인할 수도 있다.

JWT의 구조

JWT에는 세가지의 구성요소가 있으며, 점(.)으로 구분된다.

Header . Payload . Signature
1. Header : 토큰 유형과 해싱 알고리즘 타입(SHA256 or RSA)을 정의.
2. Payload : 토큰 발급자, 토큰 만료기간 등을 정의.
3. Signature : 헤더와 페이로드의 인코딩 값을 비밀키를 통해 암호화하고 다시 해쉬하여 인코딩.

JWT 공식 사이트에서 디코딩과 인코딩, JWT 값을 만들어 볼 수 있다.

JWT의 장점

호환성이 좋다. JSON형태는 거의 모든 플랫폼 환경에서 JWT토큰을 생성할 수 있으며, 서버에서 토큰을 확인할 필요가 없다. 특히 모바일과 같은 클라이언트에서 쓰기도 매우 좋다.

액세스 가능한 데이터, 권한 지속 시간, 로그인 시 가능한 작업을 지정할 수 있다.

JSON은 인코딩 되었을 때의 크기가 작다. 이로 인해 HTML 이나 HTTP 를 이용해 정보를 빠르게 전달할 수 있다. 또한 사용자 인증 정보가 페이로드에 담겨있기 때문에 인증 정보에 대한 저장소가 필요 없다.

JWT의 단점

JWT 토큰 페이로드에는 BASE64로 인코딩만 될 뿐 이것을 다시 디코딩하여 정보를 얻을 수 있다. 그래서 가급적 유저의 중요 정보를 담지 않아야한다.

쿠키/세션과 다르게 JWT는 토큰의 길이가 길어, 인증 요청이 많아질수록 네트워크 부하가 심해진다.

참고자료 : https://www.okta.com/kr/identity-101/what-is-token-based-authentication/

profile
일요일을 좋아합니다.

0개의 댓글