Server/Web & Server

JWT란? (JavaScript Web Token)

Fehoon- 2023. 6. 7. 10:26

JWT란?

JWT(JavaScript Web Token)는 인터넷에서 정보를 안전하게 전달하기 위한 토큰 기반의 오픈 표준입니다. 주로 웹 및 모바일 애플리케이션에서 인증과 권한 부여를 관리하는 데 사용됩니다. JWT는 JSON 형식으로 작성되어 있으며, 토큰 안에 필요한 정보를 포함시킵니다.

JWT는 세 가지 부분으로 구성됩니다:

헤더(Header):

JWT의 유형과 서명 알고리즘 등의 메타데이터를 포함합니다. 일반적으로 JSON 형식으로 작성되며, Base64로 인코딩됩니다.

페이로드(Payload):

JWT에 포함할 정보, 즉 클레임(Claim)이라고도 불리는 데이터를 포함합니다. 클레임은 토큰 발급자가 정의하며, 사용자 ID, 권한, 만료일 등과 같은 다양한 정보를 담을 수 있습니다. 마찬가지로 JSON 형식으로 작성되고, Base64로 인코딩됩니다.

서명(Signature):

서명은 헤더와 페이로드를 인코딩한 후, 비밀 키를 사용하여 생성됩니다. 서명은 토큰의 변조 여부를 확인하기 위해 사용되며, 서버 측에서 유효성 검사에 사용됩니다.

JWT의 장점은 다음과 같습니다:

  • 정보 포함: JWT는 페이로드로 원하는 사용자 정보를 포함시킬 수 있어, 인증 및 권한 관리에 유용합니다.
  • 자가 수용적(Self-contained): JWT는 자체적으로 모든 필요한 정보를 포함하고 있으므로, 별도의 세션 상태 저장소가 필요 없습니다.
  • 확장 가능: 클레임을 사용하여 필요에 따라 사용자 정의 데이터를 추가할 수 있습니다.
  • 분산 환경 지원: JWT는 클라이언트와 서버 간에 전달되므로, 다중 서버나 다중 도메인 환경에서도 사용할 수 있습니다.

JWT는 기본적으로 안전한 토큰이지만, 토큰을 안전하게 보호하고 검증하는 과정이 중요합니다. 토큰이 유출되지 않도록 암호화하고, 서명을 검증하여 변조 여부를 확인하는 것이 필요합니다.

반응형