티스토리 뷰
Django REST Framework에서 Basic Token 인증 방식 사용하기
4OurFuture 2025. 2. 6. 10:57Django REST Framework(DRF)에서는 다양한 인증 방식을 지원합니다. 그중에서도 Basic Token Authentication을 사용하면 간편하게 API 보안을 강화할 수 있습니다. 이번 글에서는 DRF에서 Basic Token을 발급하고 이를 사용하여 API 요청을 수행하는 방법을 설명하겠습니다.
1. Basic Token 인증이란?
Basic Token Authentication은 클라이언트가 요청을 보낼 때, 사용자의 자격 증명(토큰)을 HTTP 헤더에 포함하여 인증하는 방식입니다. 일반적으로 Authorization: Token <토큰> 형식으로 전송됩니다.
2. Django REST Framework에서 Basic Token 활성화하기
📌 1️⃣ DRF 설정 변경
settings.py에서 TokenAuthentication을 활성화합니다.
INSTALLED_APPS = [
'rest_framework',
'rest_framework.authtoken', # Token 인증을 위한 앱 추가
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication', # Token 인증 활성화
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated', # 인증된 사용자만 접근 가능
]
}
📌 2️⃣ 마이그레이션 수행
Token 모델을 데이터베이스에 반영하려면 아래 명령어를 실행하세요.
python manage.py migrate
3. Basic Token 발급하기
📌 1️⃣ 토큰을 생성하는 뷰 추가
사용자가 로그인하면 토큰을 발급해 주는 API를 만듭니다.
from rest_framework.authtoken.views import ObtainAuthToken
from rest_framework.authtoken.models import Token
from rest_framework.response import Response
class CustomAuthToken(ObtainAuthToken):
def post(self, request, *args, **kwargs):
serializer = self.serializer_class(data=request.data, context={'request': request})
serializer.is_valid(raise_exception=True)
user = serializer.validated_data['user']
token, created = Token.objects.get_or_create(user=user)
return Response({'token': token.key})
📌 2️⃣ URL 연결
urls.py에서 위에서 만든 CustomAuthToken을 엔드포인트로 등록합니다.
from django.urls import path
from .views import CustomAuthToken
urlpatterns = [
path('api/token/', CustomAuthToken.as_view(), name='api_token_auth'),
]
📌 3️⃣ Postman으로 토큰 발급 요청하기
- 요청 타입: POST
- 요청 URL: http://localhost:8000/api/token/
- 요청 Body (JSON):
{
"username": "your_username",
"password": "your_password"
}
- 응답 예시:
{
"token": "b74d4f3e19c2f4c7d74a6c90d04d14a54b15c5f2"
}
4. API 요청 시 Basic Token 사용하기
📌 1️⃣ 요청 헤더에 토큰 추가
발급받은 토큰을 API 요청 헤더에 포함해야 합니다.
🔹 요청 방식: GET 🔹 요청 URL: http://localhost:8000/api/protected-resource/ 🔹 요청 헤더:
Authorization: Token b74d4f3e19c2f4c7d74a6c90d04d14a54b15c5f2
📌 2️⃣ Postman을 이용한 요청 예제
- Headers 탭에서 Authorization 키를 추가하고, 값으로 Token <발급받은_토큰>을 입력합니다.
- Body 탭은 비워둡니다.
- 요청을 보내면 인증된 사용자로서 데이터를 받을 수 있습니다.
5. 인증이 필요한 API 보호하기
이제 특정 API 엔드포인트에서 인증된 사용자만 접근할 수 있도록 보호할 수 있습니다.
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
class ProtectedView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request):
return Response({"message": "인증된 사용자만 접근할 수 있습니다."})
urls.py에 엔드포인트 추가:
urlpatterns += [
path('api/protected-resource/', ProtectedView.as_view(), name='protected_resource'),
]
6. 마무리
이번 글에서는 Django REST Framework에서 Basic Token 인증을 설정하고, 토큰을 발급받고, API 요청에 사용하는 방법을 다뤘습니다.
📌 요약
1️⃣ rest_framework.authtoken을 활성화하고 마이그레이션 수행
2️⃣ 사용자 로그인 시 토큰을 발급하는 API 추가
3️⃣ API 요청 시 Authorization: Token <토큰> 헤더 추가
4️⃣ 인증이 필요한 API에서 IsAuthenticated 권한 적용
이제 Django에서 간편하게 Basic Token Authentication을 활용할 수 있습니다! 🚀
'Python > Django Framework (DRF)' 카테고리의 다른 글
manage.py migrate 오류 해결 (0) | 2025.02.18 |
---|---|
Django Settings 관리하기: 로컬과 프로덕션 환경 분리 전략 (0) | 2025.02.12 |
Django REST Framework에서 JWT Token 설정 및 API 호출하기 (1) | 2025.02.05 |
[CentOS] MySql 설치 오류 (2) | 2025.01.09 |
Windows IIS 서버에 Django 애플리케이션 배포 (2) | 2024.12.09 |
- Total
- Today
- Yesterday
- 로또 1164회 당첨
- chat gpt 모델 api 가격 예측
- 클래스형 뷰
- chat gpt 4o 예산
- chat gpt 한국어 가격
- Numpy
- github action
- f-string
- 장고 orm sql문 비교
- python 문자열 슬라이싱
- GitHub
- 텍스트 마이닝
- chat gpt 모델별 예산
- chat gpt 가격 예상
- 오블완
- 로또 ai
- pytorch
- TorchVision
- 텍스트 전처리
- 1164회 로또
- 1165회 로또
- python import
- Python
- 인공지능 로또 예측
- 티스토리챌린지
- chat gpt 모델 별 가격
- postgre
- 케라스
- 토치비전
- chat gpt api 비용 계산
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |