← 목록

JWT를 활용한 안전한 사용자 인증 방법

작성: 2025년 06월 29일읽기: 약 3분

안녕하세요, 웹 개발에 관심 있는 주니어 개발자 여러분! 오늘은 사용자 인증에서 중요한 역할을 하는 JWT(JavaScript Web Tokens)에 대해 알아보려고 합니다. JWT는 웹사이트와 서버 간에 안전하게 정보를 주고받을 수 있는 방법 중 하나입니다. 복잡한 기술 용어는 최대한 피하면서, JWT가 무엇이고 어떻게 사용하는지 쉽게 설명해 드리겠습니다.

JWT란 무엇인가요?

JWT는 사용자 인증에 자주 사용되는 토큰 형식입니다. 간단히 말해, 사용자가 로그인을 하면 서버는 사용자에게 JWT를 발급합니다. 이 토큰은 사용자가 누구인지 식별할 수 있는 정보를 암호화한 것으로, 이후 사용자가 서버에 요청을 보낼 때마다 이 토큰을 함께 보내 사용자를 인증하게 됩니다.

JWT의 구조

JWT는 세 부분으로 구성됩니다: 헤더(Header), 페이로드(Payload), 그리고 서명(Signature).

JWT 사용 예제

다음은 Node.js 환경에서 JWT를 생성하고 검증하는 간단한 예제입니다. jsonwebtoken 패키지를 사용합니다.

먼저, jsonwebtoken 패키지를 설치합니다:

npm install jsonwebtoken

JWT 생성하기:

const jwt = require('jsonwebtoken');

const token = jwt.sign({ userId: 123 }, 'your_secret_key', { expiresIn: '1h' });
console.log(token);

이 코드는 사용자 ID가 123인 사용자에 대한 JWT를 생성합니다. 'your_secret_key'는 토큰을 암호화하는 데 사용되는 비밀 키입니다. expiresIn: '1h'는 토큰이 1시간 후에 만료됨을 의미합니다.

JWT 검증하기:

jwt.verify(token, 'your_secret_key', (err, decoded) => {
  if (err) {
    console.error('Token verification failed:', err);
    return;
  }

  console.log('Token is valid. Decoded payload:', decoded);
});

이 코드는 앞서 생성한 토큰을 검증합니다. 토큰이 유효하다면, decoded 변수를 통해 페이로드의 내용을 확인할 수 있습니다.

JWT의 장점

JWT는 웹 개발에서 사용자 인증을 다룰 때 매우 유용한 도구입니다. 이 기술을 잘 이해하고 활용한다면, 보다 안전하고 효율적인 웹 애플리케이션을 만들 수 있을 것입니다. 오늘 배운 내용을 실제 프로젝트에 적용해 보세요!