Django

Chapter 14-4 Django에서 Simple-JWT로 토큰 발급하기 완전 정복

Chansman 2025. 5. 21. 18:04

🔐 Django에서 Simple-JWT로 토큰 발급하기 완전 정복


🎯 목표

  • Django REST Framework + SimpleJWT를 사용해 JWT 발급 API 구성하기
  • 직접 뷰 작성 없이 기본 제공 View로 빠르게 적용하기
  • 관리자 페이지에서 사용자 생성 → 토큰 발급까지 실습하기

✅ SimpleJWT란?

SimpleJWT는 Django REST Framework(DRF)에서 JWT(Json Web Token) 기반 인증을 쉽게 구현할 수 있는 라이브러리입니다.

  • 🪙 토큰 기반 인증: 세션 상태를 유지하지 않아 RESTful 설계에 적합
  • 🔐 Access + Refresh 토큰 방식: 보안성과 재사용성 강화
  • 🧱 인증 시스템을 빠르게 세팅할 수 있는 기본 View 제공

⚙️ 1단계: 프로젝트 세팅

  1. Poetry 환경 구성
pip install poetry
poetry init  # 기본값 엔터
  1. 필수 패키지 설치
poetry add django
djangorestframework
djangorestframework-simplejwt
  1. 프로젝트 생성 및 설정
django-admin startproject lets_simplejwt
cd lets_simplejwt
  1. settings.py 설정
INSTALLED_APPS = [
    'rest_framework',
    'rest_framework_simplejwt',
    ...
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),
}

🛠️ 2단계: URL 라우팅 설정

SimpleJWT는 내장된 토큰 발급 뷰를 제공합니다. urls.py에서 다음과 같이 설정합니다.

from django.contrib import admin
from django.urls import path
from rest_framework_simplejwt.views import (
    TokenObtainPairView,
    TokenRefreshView,
)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
]

🧱 3단계: 마이그레이션 & 서버 실행

python manage.py migrate
python manage.py runserver

🧑‍💼 4단계: 관리자 계정 & 유저 생성

  1. 관리자 계정 생성
python manage.py createsuperuser
  • username, password 입력 (보안 경고 무시 가능)
  1. 관리자 페이지 접속
http://127.0.0.1:8000/admin
  1. 유저 생성하기
  • Username, 비밀번호 입력
  • Django는 비밀번호 보안 정책(8자 이상 등)을 자동 적용합니다.

🚀 5단계: API 테스트 전 준비 완료!

  • 현재 상태:
    • 관리자 계정 O
    • 일반 유저 O
    • 토큰 발급 URL 설정 O

🧪 테스트 예고편: Postman으로 토큰 발급 받기

다음 단계에서는 Postman을 통해 실제로 위에서 생성한 유저의 Access, Refresh 토큰을 발급받고 사용하는 실습을 진행합니다.

👉 api/token/ POST 요청으로 로그인
👉 api/token/refresh/로 토큰 갱신까지 배워봅시다!


✅ 이번 포스트 핵심 요약

구성 요소 설명

SimpleJWT DRF용 JWT 인증 패키지
TokenObtainPairView 로그인 시 Access + Refresh 토큰 발급
TokenRefreshView Refresh 토큰으로 Access 갱신
JWT 사용 이유 세션 없는 인증, 유연하고 안전함

👉 다음 블로그에서는 Postman으로 토큰을 활용하는 API 테스트 실습을 다룹니다!