나의보물들/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