Olá, gostaria de saber como é possível aplicar essa estrutura de autenticação social para uma api desenvolvida em DRF, a autenticação nesse cenário deve ser feita também pelo django, correto ?
Olá, gostaria de saber como é possível aplicar essa estrutura de autenticação social para uma api desenvolvida em DRF, a autenticação nesse cenário deve ser feita também pelo django, correto ?
Olá, João.
Tudo bem?
Para implementar a autenticação OAuth2.0 no Django Rest Framework (DRF), você pode utilizar a biblioteca django-oauth-toolkit
, que é uma das mais populares para essa finalidade. Veja esse exemplo básico para configurar essa autenticação.
Instale as bibliotecas necessárias:
pip install django-oauth-toolkit
pip install djangorestframework
Adicione as bibliotecas ao seu settings.py
:
INSTALLED_APPS = [
...
'oauth2_provider',
'rest_framework',
'rest_framework.authtoken',
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
}
Configure URLs no seu urls.py
:
from django.urls import path, include
urlpatterns = [
...
path('o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
]
Crie um aplicativo OAuth2 no Django Admin:
Proteja suas views com permissões:
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
class ProtectedResource(APIView):
permission_classes = [IsAuthenticated]
def get(self, request):
return Response(data={"message": "This is a protected resource"})
Obtenha um token de acesso: Para testar, você pode usar ferramentas como Postman ou cURL para obter um token de acesso. Por exemplo:
curl -X POST -d "grant_type=password&username=yourusername&password=yourpassword" -u"client_id:client_secret" http://localhost:8000/o/token/
Use o token para acessar recursos protegidos: Depois de obter o token, você pode usá-lo para acessar recursos protegidos, adicionando-o no cabeçalho da requisição:
curl -H "Authorization: Bearer your_access_token" http://localhost:8000/your_protected_resource/
Espero ter ajudado e bons estudos!