나의보물들/Authentication

[JWT] Linux에서 JWT Secret 생성 방법

솔솔하네 2025. 1. 11. 12:08
반응형

🍀 JWT란?


JWT(Json Web Token)는 두 개체 간의 정보를 JSON 객체 형태로 안전하게 전달하기 위한 토큰 기반 인증 방식. JWT는 주로 사용자 인증 및 권한 부여를 위해 사용되며, 웹 애플리케이션에서 널리 사용됨.

 

 

🍀 JWT의 구조


Header (헤더)

  • 토큰의 타입(JWT)과 서명 알고리즘(예: HMAC SHA256)을 정의 함.
{
  "alg": "HS256",
  "typ": "JWT"
}

 

Payload (페이로드)

  • 토큰에 포함될 실제 데이터(클레임)를 담고 있음.
{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

 

Signature (서명)

  • 헤더와 페이로드를 결합한 후 비밀 키(JWT Secret)와 함께 해싱하여 생성 됨.
  • 서명은 토큰의 무결성을 검증하는 데 사용 됨.

 

🍀 JWT Secret란?


JWT Secret은 JWT의 서명(Signature)을 생성하고 검증하는 데 사용되는 비밀 키

 

  • 토큰 생성 시:
    서버는 헤더와 페이로드를 결합한 후, Secret을 사용해 서명을 생성 함.
  • 토큰 검증 시:
    서버는 클라이언트로부터 받은 토큰의 서명을 Secret으로 검증하여 데이터의 무결성을 확인 함.

 

 

🍀 JWT Secret 생성의 중요성 및 충족 사항


JWT Secret이 유출되거나 충분히 강력하지 않으면 공격자가 토큰을 위조하거나 변조할 수 있음.

 

  • 랜덤하고 예측 불가능해야 함
  • 충분히 길어야 함 (최소 256비트)
  • 안전한 저장 방식 사용 (환경변수 등)

 

 

 

🍀 Linux CLI로 안전한 JWT Secret 생성


 

OpenSSL로 Base64 인코딩된 Secret 생성

openssl rand -base64 32