웹 개발/데일리 토픽

Access Token, Refresh Token 이해

ecofinder 2024. 1. 22. 01:18
반응형

Access Token, Refresh Token 이해

안녕하세요 여러분! 오늘은 웹 개발에서 사용되는 "Access Token"과 "Refresh Token"에 대해 알아보려고 해요! 🚀

Access Token과 Refresh Token은 사용자 인증과 권한 부여를 위해 사용되는 토큰입니다. 웹 애플리케이션에서는 보안성을 유지하고 사용자의 인증 상태를 유지하기 위해 이러한 토큰 기반의 인증 시스템을 많이 사용하고 있답니다. 😊

Access Token이란?

Access Token은 사용자의 인증 정보를 포함한 토큰입니다. 일반적으로 짧은 유효 기간을 가지며, 사용자가 웹 애플리케이션에 로그인할 때 발급됩니다. Access Token을 이용하여 사용자가 인증된 요청을 보낼 수 있고, 인증이 필요한 리소스에 접근할 수 있도록 합니다. 😎

Refresh Token이란?

Refresh Token은 Access Token의 갱신을 위해 사용되는 토큰입니다. Access Token은 유효기간이 짧아 만료될 수 있으므로, Refresh Token을 사용하여 재발급할 수 있답니다. Refresh Token은 일반적으로 Access Token보다 유효 기간이 길며, 보안에 더 강렬한 암호화가 사용됩니다. 🔄🔒

예시를 통한 Access Token과 Refresh Token

Access Token과 Refresh Token을 사용하여 사용자 인증을 관리하는 예시를 살펴보도록 할게요. 여기서는 Node.js와 Express를 사용한 예시를 보여드릴게요:


// 라이브러리 설치
npm install jsonwebtoken

// server.js

const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();

// 로그인 라우트
app.post('/login', (req, res) => {
  // 사용자 인증 처리

  // Access Token 생성
  const accessToken = jwt.sign({ username: 'john_doe' }, 'access_secret_key', { expiresIn: '15m' });

  // Refresh Token 생성
  const refreshToken = jwt.sign({ username: 'john_doe' }, 'refresh_secret_key', { expiresIn: '7d' });

  // Access Token과 Refresh Token을 클라이언트에게 전송
  res.json({ accessToken, refreshToken });
});

// 인증 미들웨어 설정
function authenticateToken(req, res, next) {
  // 헤더에서 Access Token 가져오기
  const authHeader = req.headers.authorization;
  const token = authHeader && authHeader.split(' ')[1];

  // Access Token 존재 여부 확인
  if (token == null) return res.sendStatus(401);

  // Access Token 검증
  jwt.verify(token, 'access_secret_key', (err, user) => {
    if (err) return res.sendStatus(403);

    // 사용자 정보 저장
    req.user = user;
    next();
  });
}

// 보호된 라우트
app.get('/protected', authenticateToken, (req, res) => {
  res.json({ message: 'Protected data accessed!', user: req.user });
});

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

위의 코드는 Express 애플리케이션에서 Access Token과 Refresh Token을 사용하여 인증을 관리하는 예시입니다. /login 라우트에서 사용자 인증을 처리하고, Access Token과 Refresh Token을 생성하여 클라이언트에게 전송합니다. 그리고 /protected 라우트에서는 Access Token을 검증하여 인증된 요청인지 체크하고, 사용자 정보에 접근할 수 있도록 합니다. 간단하죠? 😄

결론

Access Token과 Refresh Token은 웹 애플리케이션에서 사용자 인증과 권한 부여를 위해 사용되는 토큰입니다. Access Token은 인증된 요청을 보내는데 사용되고, Refresh Token은 Access Token의 갱신을 위해 사용됩니다. 이를 통해 보안성을 강화하고 사용자의 인증 상태를 유지할 수 있답니다. 토큰을 활용하여 안전하고 효과적인 웹 개발을 진행해보세요! 🔑💪

이 포스팅은 쿠팡 파트너스의 활동의 일환으로, 일정한 금액의 수수료를 받게됩니다.

👉 쿠팡에서 원하는 상품을 찾아보세요!

반응형

'웹 개발 > 데일리 토픽' 카테고리의 다른 글

JWT (JSON Web Token)  (0) 2024.01.22
관계형 데이터베이스 (RDBMS)  (0) 2024.01.21
라우터 (Router)  (0) 2024.01.20
CSS 방법론 - BEM  (0) 2024.01.19
TDD (Test driven development)  (0) 2024.01.19