[nodejs] REST API를 위한 보안 토큰 발급 및 관리

본 블로그에서는 Node.js를 사용하여 REST API의 보안 토큰을 발급하고 관리하는 방법에 대해 살펴보겠습니다.

보안 토큰이란?

보안 토큰은 사용자의 인증 및 권한 부여를 위한 키로, API를 호출할 때 각 요청에 함께 전달되어야 합니다. 이를 통해 API 서버는 요청이 유효하고 인증된 사용자에 의해 수행되었는지 확인할 수 있습니다.

Node.js에서의 보안 토큰 발급

보안 토큰을 발급하려면, JWT(JSON Web Token)와 같은 메커니즘이 주로 사용됩니다. Node.js에서는 jsonwebtoken 패키지를 사용하여 간단히 JWT를 생성할 수 있습니다.

아래는 JWT를 생성하는 간단한 예제 코드입니다.

const jwt = require('jsonwebtoken');

const secretKey = 'mySecretKey';
const userData = {
  userId: 123,
  username: 'john_doe'
};

const token = jwt.sign(userData, secretKey, { expiresIn: '1h' });

위 코드에서 jwt.sign 함수를 사용하여 사용자 데이터를 기반으로 토큰을 생성하고, 시크릿 키와 만료 시간을 설정합니다.

보안 토큰의 인증과 관리

REST API에서 보안 토큰을 인증하고 관리하기 위해서는 토큰을 전송받아 해독하고 유효성을 검사해야 합니다. 또한, 만료된 토큰을 관리하고 새로운 토큰을 발급하는 로직도 포함되어야 합니다.

다음은 간단한 Node.js 예제 코드로, JWT를 해독하고 유효성을 검사하는 과정을 보여줍니다.

const verifyToken = (req, res, next) => {
  const token = req.headers.authorization;
  if (!token) return res.status(401).json({ message: '토큰이 없습니다.' });

  jwt.verify(token, secretKey, (err, decoded) => {
    if (err) return res.status(401).json({ message: '유효하지 않은 토큰입니다.' });

    req.user = decoded;
    next();
  });
};

위 코드는 요청의 헤더에서 토큰을 추출하여 해독하고 유효성을 검사하는 미들웨어 함수를 나타냅니다. 유효성 검사에 실패하면 401 상태 코드와 함께 적절한 메시지를 반환합니다.

마무리

이러한 방법을 통해 Node.js를 사용하여 REST API의 보안 토큰을 쉽게 발급하고 관리할 수 있습니다. 보안 토큰을 적절히 다루어 API의 보안성을 강화하는 데 도움이 될 것입니다.

참고문헌: