IT잡지식

[IT잡지식] JWT (JSON Web Token) 란?

IT-PAPA 2023. 9. 1. 06:13
반응형


JWT( JSON Web Token)은 웹 통신 시 데이터를 안전하게 전송하기 위한 표준 방식 중 하나입니다. 주로 클라이언트와 서버 간의 인증 정보나 클레임(Claim) 데이터를 포함한 토큰을 생성하여 사용합니다. JWT는 JSON 형식으로 정보를 표현하며, 디지털 서명을 사용하여 무결성을 보호하고 신뢰성을 확보합니다.

JWT는 세 가지 구성 요소로 이루어져 있습니다.

  1. Header (헤더): JWT의 유형과 사용되는 알고리즘을 포함합니다. 예를 들어, {"alg": "HS256", "typ": "JWT"}와 같은 형식으로 표현됩니다.

  2. Payload (내용): 실제로 전달하려는 데이터를 담습니다. 클레임(클레임은 토큰에 담긴 정보를 나타내며, 예를 들어 사용자 ID, 권한 등을 포함할 수 있습니다.)과 기타 정보들이 들어갑니다. 일반적으로 {"sub": "1234567890", "name": "John Doe", "iat": 1516239022}와 같은 형식으로 표현됩니다.

  3. Signature (서명): 헤더와 페이로드를 합친 후, 비밀 키(secret key) 또는 공개/개인 키(public/private key)를 사용하여 디지털 서명합니다. 이 서명을 통해 토큰이 변조되지 않았는지 검증할 수 있습니다.

JWT는 여러 용도로 사용될 수 있습니다:

  • 인증과 인가: 사용자의 로그인 정보를 포함한 토큰을 발행하여 인증을 수행하고, 클라이언트가 보유한 토큰 정보를 기반으로 서버에서 인가 작업을 수행할 수 있습니다.

  • 싱글 사인온(SSO): 여러 서비스에서 한 번의 로그인으로 다양한 서비스에 접근할 수 있게 하는 메커니즘을 구현할 수 있습니다.

  • 정보 교환: 클라이언트와 서버 간에 데이터를 전달하거나 공유할 때 사용할 수 있습니다.

JWT의 장점:

  • 무상태성(Stateless): 서버 쪽에 세션 정보를 유지하지 않고 클라이언트 측에서 토큰을 보관하므로, 서버의 부하를 줄일 수 있습니다.

  • 클라이언트 확장성: 서버의 응답으로 받은 토큰을 저장하고 전송하기만 하면 되므로, 다양한 클라이언트 환경에서 사용할 수 있습니다.

  • 분산 시스템 지원: 여러 독립된 시스템 간에 토큰을 사용하여 인증을 수행할 수 있습니다.

그러나 JWT의 주의할 점도 있습니다:

  • 안전한 키 관리: 토큰을 서명하기 위해 사용되는 키를 안전하게 보관하고 관리해야 합니다.

  • 데이터 노출 위험: 토큰의 내용이 Base64로 인코딩되어 있기 때문에, 클라이언트 측에서 디코딩하면 내용을 확인할 수 있습니다. 민감한 정보는 포함하지 않아야 합니다.

  • 토큰 만료 관리: 토큰은 만료 시간이 설정되므로, 적절한 만료 시간을 설정하고 갱신해야 합니다.

JWT는 유연하면서도 보안 강화를 위한 몇 가지 주의사항이 필요한 매우 유용한 메커니즘입니다.

728x90
반응형
LIST