En las settings del proyecto agregamos las apps necesarias, la autenticación y permisos.

#settings.py

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework’,
# nombre de nuestra app 
'autenticacion.apps.AutenticacionConfig’,
]

#Activar autenticación y permisos
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
}

DEFAULT_AUTHENTICATION_CLASSES: Define los métodos de autenticación que usará la API. • BasicAuthentication: Utiliza la autenticación básica HTTP, que implica que el cliente envíe un usuario y contraseña en cada solicitud. No es recomendado para producción sin HTTPS.

En los endpoints agregamos el tipo de permiso que corresponda a cada endpoint. Ejemplo:

Solo autenticación

#views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated

class MensajeSecretoView(APIView):
	permission_classes = [IsAuthenticated]
	def get(self, request):
		return Response({"mensaje": "¡Perfecto! Accediste al contenido secreto."})

Solo Administradores

#views.py
from rest_framework.permissions import IsAdminUser

class AdminOnlyView(APIView):
	permission_classes = [IsAdminUser]
	def get(self, request):
		return Response({"mensaje": "¡Hola, Admin! Tienes acceso exclusivo."})

Ahora debemos probar en Postman dos casos para verificar comportamiento de la solicitud: • Caso sin autenticación • Caso con usuario y contraseña (En Postman, pestaña Authorization, Type: “Basic Auth”)

¿Cómo crear un usuario para autenticarse?

Si aún no tienes usuarios en la base de datos, puedes crear uno de dos maneras:

1. Crear un usuario administrador (superusuario)

Ejecuta el siguiente comando en la terminal dentro de tu proyecto:

python manage.py createsuperuser