[JWT 인증 라이브러리] npm jose 설치 및 가이드

KUKJIN LEE's profile picture

KUKJIN LEE1개월 전 작성

JOSE(JavaScript Object Signing and Encryption)는 JSON 기반으로 구조화된 웹 토큰(JWT)을 생성하고 검증하는 데 사용되는 라이브러리입니다. jose 패키지는 보안 API를 제공하여, JWT 발급 및 검증, 암호화, 디지털 서명 등을 지원합니다. 보안이 중요한 API 인증과 같은 상황에서 JOSE를 활용하면 보안성을 강화할 수 있습니다.

 

jose는?

  • 강력한 비밀 키 사용도 가능하다. (RSA)

  • 토큰 만료 시간 설정: 토큰의 만료 시간을 설정을 통해 인증이 불필요하게 지속되지 않도록 설정 가능하다.

  • 환경 변수로 키 관리: 민감한 키는 환경 변수에 보관할 수 있다.

 

npm을 통한 jose 설치 방법

npm install jose

1. JWT 생성하기

JOSE 패키지를 사용하면 JWT를 간단하게 생성할 수 있습니다. 비밀 키(secret key)를 이용해 사용자 정보를 서명하고, 발급된 토큰을 활용하여 인증을 진행할 수 있습니다.

const { SignJWT } = require('jose');

async function createJWT(payload) {
  const secret = new TextEncoder().encode('secret-key');
  const token = await new SignJWT(payload)
    .setProtectedHeader({ alg: 'HS256' })
    .setIssuedAt()
    .setExpirationTime('2h')
    .sign(secret);
  return token;
}

2. JWT 검증하기

발급된 토큰을 검증하여 인증을 유지하거나 필요한 데이터를 검토할 수 있습니다. jose라이브러리를 활용해 비밀 키로 서명을 검증합니다.

const { jwtVerify } = require('jose');

async function verifyJWT(token) {
  const secret = new TextEncoder().encode('secret-key');
  try {
    const { payload } = await jwtVerify(token, secret);
    console.log('JWT 검증 성공:', payload);
    return payload;
  } catch (error) {
    console.error('JWT 검증 실패:', error);
    throw new Error('Invalid Token');
  }
}

New Tech Posts