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 ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!