Как реализовать аутентификацию JWT для нескольких REST-сервисов в Django REST Framework?

В итоге у меня будет несколько микросервисов для этого проекта (расчет, клиент и другие). Рабочий процесс выглядит следующим образом: пользователь входит в систему, получает JWT, а затем совершает несколько обращений к различным сервисам до тех пор, пока срок действия токена не истек.

Я создал службу аутентификации в DRF, используя Simple JWT. Вызов токена и обновление работают отлично. Я совсем новичок в DRF, поэтому не знаю, как лучше это сделать. Как мне реализовать это так, чтобы другие сервисы знали, что токен действителен? Архитектурно каждый микросервис будет размещен в собственном контейнере в AWS. Можно ли для этого использовать управление API в AWS?

Любая помощь будет высоко оценена.

Вы можете использовать следующие подходы:

  1. Центральная служба аутентификации: Настройте центральный сервис для генерации токенов с помощью djangorestframework-simplejwt. Вы можете добавить следующее в настройках SIMPLE_JWT в файле settings.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'), ]
  1. JWT Validation in Microservices: Здесь каждый микросервис будет оценивать токены, используя общий секретный или открытый ключ:
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),
}
  1. Передача JWT для межсервисного взаимодействия: Передача JWT-токена в качестве маркера Bearer в заголовке Auth при вызове другого сервиса:
headers = {'Authorization': f'Bearer {user_token}'} response = 
requests.get('http://service/api/resource/', headers=headers)
Вернуться на верх