1
resposta

Dúvida sobre JWT com DRF

Olá pessoal,

Estou desenvolvendo uma API que utiliza JWT token através da lib "djangorestframework-simplejwt", para garantir a segurança dela, gostaria de validar as requisições usando CSRF token, fiz pesquisas mas ainda não entendi como posso fazer isso, poderiam me dar alguma dica?

Desde já, agradeço!!!

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá Vinicius, tudo bem com você?

Peço desculpas pela demora em lhe responder.

Para adicionar proteção CSRF à sua API do Django Rest Framework (DRF) que usa JWT, você pode usar a classe CSRFExemptSessionAuthentication fornecida pelo DRF. Essa classe é uma subclasse de SessionAuthentication que desativa a proteção CSRF em todas as solicitações autenticadas com sessão, permitindo que você use o JWT para autenticação.

Aqui está um exemplo de como você pode usar CSRFExemptSessionAuthentication para proteger sua API com JWT e CSRF:

Importe CSRFExemptSessionAuthentication da biblioteca DRF no topo do arquivo settings.py da aplicação

from rest_framework.authentication import SessionAuthentication, CSRFExemptSessionAuthentication

Adicione as seguintes linhas à seção REST_FRAMEWORK do seu arquivo settings.py para definir a autenticação padrão e desativar a proteção CSRF para solicitações autenticadas com sessão:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'myapp.authentication.CSRFExemptSessionAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
    ],
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
    ],
}

Crie um novo arquivo chamado authentication.py dentro do diretório do seu aplicativo (por exemplo, myapp/) e adicione o seguinte código:

from rest_framework.authentication import SessionAuthentication

class CSRFExemptSessionAuthentication(SessionAuthentication):
    def enforce_csrf(self, request):
        return

Após adicionar essas configurações ao seu arquivo settings.py, salve-o e reinicie o servidor de desenvolvimento (caso esteja usando um). Sua API agora estará protegida contra ataques CSRF e autenticada usando JWT.

Todavia, vale ressaltar que como é um assunto externo ao curso e que não tenho acesso ao cenário completo do projeto, pode ocorrer a necessidade de realizar outros testes a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema.

Espero ter ajudado. Continue mergulhando em conhecimento!

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!