minstudio

JWT(JSON Web Token) 인증 (무상태 인증)

세션 방식은 접속자가 10만 명이 되면 서버 메모리(장부)가 터진다는 치명적인 단점이 있습니다. 이를 극복하기 위해 나온 토큰 기반 무상태(Stateless) 인증 기법입니다.

🎟️ JWT의 원리 (주민등록증)

경찰이 시민의 신원을 확인할 때마다 경찰청 서버(세션)에 조회하지 않듯, 위조 불가능한 홀로그램 서명이 들어간 주민등록증(JWT)을 시민(브라우저)이 들고 다니며 요청마다 보여주는 방식입니다.

const jwt = require("jsonwebtoken");

app.post("/login", (req, res) => {
    // 비밀번호 확인 후 서버는 장부(세션)를 적지 않음!
    
    // 대신 유저 정보(Payload)와 서명(Signature)을 합쳐 위조 불가능한 암호화 토큰 발급
    const token = jwt.sign({ userId: 1, role: "admin" }, process.env.JWT_KEY, {
        expiresIn: "1h" // 1시간 뒤 만료
    });
    
    res.json({ token: token }); // 프론트엔드에게 던져줌
});
JWT(JSON Web Token) 인증 (무상태 인증) | Minstudio