티스토리 뷰
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자에게 노출되는 것을 방지할 수 있습니다.
'개발' 카테고리의 다른 글
[개발]JWT 갱신 토큰 관리 방법(3)-DB 사용 (0) | 2023.07.03 |
---|---|
[개발]JWT 갱신 토큰 관리 방법 (2) - 로컬스토리지/쿠키 사용 (0) | 2023.07.03 |
[개발]JWT 갱신 토큰 관리 방법(1) (0) | 2023.07.03 |
[개발]JWT를 이용한 사용자 갱신 및 관리 방법 (0) | 2023.07.03 |
[개발] 로그인 API 개발 방식 (0) | 2023.07.03 |