포스트

[Recipe: Remake] JWT 도입

JWT?

JSON Web Token(JWT)는 RFC 7519에서 정의된 개방형 표준이다. 두 집단 사이의 클레임을 안전하게 표현한다. 클레임은 모든 비즈니스 프로세스와 연관될 수 있지만 보통 아이덴티티와 그 소속을 나타내는데 사용된다.

JWT 내의 클레임은 JSON 객체로 인코딩되고, 보통 MAC을 이용해 디지털 서명한다.
(생략)

Simple JWT 설치

1
2
$ pip install djangorestframework-simplejwt
$ pip freeze > requirements.txt

설정

Simple JWT 문서에서 설명하는 대로 설정한다.

settings.py

1
2
3
4
5
6
7
8
9
10
11
12
13
INSTALLED_APPS = [
    ...
    'rest_framework_simplejwt',
    ...
]

...

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

accounts/urls.py

1
2
3
4
5
6
7
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView

urlpatterns = [
    ...
    path('login/', TokenObtainPairView.as_view(), name='login'),
    path('login/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
]

회원탈퇴의 경우 계정이 삭제된 후 refresh 토큰이 남아있으면 로그인을 계속 할 수 있다는 문제가 있는데, 이는 Simple JWT의 블랙리스트 기능을 사용하면 해결할 수 있다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.