Удаленный DRF Auth и обработка полезной нагрузки с помощью JWT

У меня есть auth_service, tpm_api и frontend enviroments. Все сервисы используют один и тот же secret_key. Мои пользователи и разрешения находятся на auth_service. Я использую jwt_simple для аутентификации на auth_service. На фронтенд-сервисе я получаю токен от auth_service с именем пользователя и паролем. Я отправляю запросы к конечным точкам в моем сервисе tpm_api с этим токеном. Я анализирую ответ и отображаю его в моем фронтенд-сервисе. До сих пор никаких проблем.

Однако я не получаю данные token.payload в службе tpm_api.

Я добавил REST_FRAMEWORK = { "DEFAULT_AUTHENTICATION_CLASSES": ( "rest_framework_simplejwt.authentication.JWTAuthentication", ), } in settings.py.

Когда я отправляю запрос в службу tpm_api, в разделе self.request.authenticators есть <rest_framework.authentication.BasicAuthentication объект 0x000001668986C430> и <rest_framework.authentication.SessionAuthentication объект 0x000001668986C6A0>.

Мне нужен <объект rest_framework_simplejwt.authentication.JWTAuthentication по адресу 0x000001FFDCD23790>.

У меня нет модели пользователя нигде, кроме auth_service.

##### auth_service model.py #####
from django.db import models
from django.contrib.auth.models import AbstractUser

perm_parent_choices = [
    ("app", "app"),
    ("factory", "factory"),
    ("department", "department"),
    ("role", "role"),
]


class User(AbstractUser):
    perms = models.ManyToManyField("login.Perm", related_name="user_perms", blank=True)
    gsm = models.CharField(max_length=15, null=True)


class Perm(models.Model):
    parent = models.CharField(max_length=50, choices=perm_parent_choices, null=True)
    name = models.CharField(max_length=50)
    short_code = models.CharField(max_length=5)

    def __str__(self):
        return self.short_code

##### auth_service views.py #####
class UserViewSet(viewsets.ModelViewSet):
    serializer_class = serializers.UserSerializer
    queryset = models.User.objects.all()

    def list(self, request, *args, **kwargs):
        ##############################
        from rest_framework_simplejwt.authentication import JWTAuthentication
        JWT_authenticator = JWTAuthentication()
        response = JWT_authenticator.authenticate(request)
        if response is not None:
            # unpacking
            user , token = response
            request.session["perms"] = token.payload["perms"]
            print(request.session["perms"])
            # print("this is decoded token claims", token.payload)
        else:
            print("no token is provided in the header or the header is missing")
        ##############################
        return super().list(request, *args, **kwargs)
##### tpm_api_service views.py #####
class MachineGroupViewSet(viewsets.ModelViewSet):
    queryset = models.MachineGroup.objects.all()
    serializer_class = serializers.MachineGroupSerializer
    # authentication_classes = []

    def get_queryset(self):
        r = self.request.authenticators
        print(r)
        from rest_framework_simplejwt.authentication import JWTAuthentication
        JWT_authenticator = JWTAuthentication()
        response = JWT_authenticator.authenticate(self.request)
        return super().get_queryset()

Здесь я не вижу объект simple_jwt.

Вернуться на верх