Web/Django
[Django] JWT 인증
anstjwls
2024. 3. 4. 22:58
JSON Web Token(JWT)은 토큰 기반 인증에 사용할 수 있는 상당히 새로운 표준이다. 내장된 TokenAuthentication 체계와 달리, JWT 인증은 토큰을 검증하기 위해 데이터베이스를 사용할 필요가 없다. JWT 인증 패키지는 플러그 가능한 토큰 블랙리스트 앱뿐만 아니라 일부 기능을 제공하는 djangorestframework-simplejwt이다.
Simple JWT는 Django RESTFramework를 위한 JSON 웹 토큰 인증 백엔드를 제공한다.
- settings.py에 추가
REST_FRAMEWORK = {
...
'DEFAULT_AUTHENTICATION_CLASSES': (
...
'rest_framework_simplejwt.authentication.JWTAuthentication',
)
...
}
- urls.py에 추가
from rest_framework_simplejwt.views import (
TokenObtainPairView,
TokenRefreshView,
)
urlpatterns = [
...
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
...
]
- 사용
curl \
-X POST \
-H "Content-Type: application/json" \
-d '{"username": "davidattenborough", "password": "boatymcboatface"}' \
http://localhost:8000/api/token/
...
{
"access":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX3BrIjoxLCJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiY29sZF9zdHVmZiI6IuKYgyIsImV4cCI6MTIzNDU2LCJqdGkiOiJmZDJmOWQ1ZTFhN2M0MmU4OTQ5MzVlMzYyYmNhOGJjYSJ9.NHlztMGER7UADHZJlxNG0WSi22a2KaYSfd1S-AuT7lU",
"refresh":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX3BrIjoxLCJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImNvbGRfc3R1ZmYiOiLimIMiLCJleHAiOjIzNDU2NywianRpIjoiZGUxMmY0ZTY3MDY4NDI3ODg5ZjE1YWMyNzcwZGEwNTEifQ.aEoAYkSJjoWH1boshQAaTkf8G3yn0kapko6HFRt7Rh4"
}
- 반환된 access token을 사용하여 보호된 보기에 대한 인증을 증명할 수 있다.
- 수명이 짧은 access token이 만료되면 수명이 더 긴 refresh token을 사용하여 다른 access token을 얻을 수 있다.
- refresh token은 access token 재발급을 위한 도구인듯