[JWT 인증 라이브러리] npm jose 설치 및 가이드
KUKJIN LEE • 1일 전 작성
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');
}
}