티스토리 뷰

728x90

JSON Web Token(JWT)는 웹 표준 (RFC 7519)으로, 두 객체 사이에서 정보를 안전하게 전송하는 방법을 정의합니다. JWT는 일반적으로 인증 및 정보 교환에 사용됩니다.

Node.js 애플리케이션에서 JWT를 생성하고 검증하는 데는 jsonwebtoken 라이브러리를 자주 사용합니다.

다음은 JWT를 사용한 로그인 API의 예시입니다:

const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
app.use(express.json()); // Enable JSON body for POST requests

app.post('/login', (req, res) => {
  const { email, password } = req.body;

  // Validate the user input
  if (!isValidEmail(email) || !isValidPassword(password)) {
    return res.status(400).send('Invalid input');
  }

  // Authenticate the user
  const user = authenticateUser(email, password);
  if (!user) {
    return res.status(401).send('Unauthorized');
  }

  // Create a JWT token
  const token = jwt.sign({ id: user.id }, 'secret-key', { expiresIn: '1h' });

  // Return the token
  res.status(200).send({ token });
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

jwt.sign 메서드는 첫 번째 인자로 토큰에 포함할 페이로드를, 두 번째 인자로 비밀 키를, 세 번째 인자로 토큰의 만료 시간 등의 옵션을 받습니다. 토큰이 생성되면, 이를 클라이언트에게 반환합니다.

이제 클라이언트는 이 토큰을 저장하고, 이후 요청에 대한 인증 정보로 사용할 수 있습니다. 서버는 토큰을 검증하고 토큰에 포함된 사용자 정보를 사용하여 요청을 처리합니다.

안전을 위해, secret-key는 환경 변수나 별도의 설정 파일에서 불러오는 것이 좋습니다. 실제 서비스에서는 이를 노출시키면 안 됩니다. 또한, HTTPS를 사용하여 통신해야 JWT가 제 3자에게 노출되는 것을 방지할 수 있습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함