Aprenda a crear un sistema de inicio de sesión seguro con cuentas de redes sociales en Django usando OAuth.
La autenticación social es una forma de confirmar la identidad de una persona a través de una cuenta social en lugar de utilizar contraseñas. En el desarrollo web, siempre resulta útil autenticar usuarios sin contraseñas. De esta manera, pueden iniciar sesión a través de aplicaciones sociales como Google, Twitter o GitHub.
Habilitar la autenticación social es una excelente manera de mejorar la seguridad de su aplicación al reducir el riesgo de vulnerabilidades comunes relacionadas con las contraseñas. También mejorará la experiencia del usuario de su aplicación porque los usuarios no necesitarán recordar muchas contraseñas.
Autenticación de usuario en Django
Django proporciona un sistema de autenticación predeterminado para que trabajen los desarrolladores. Sin embargo, este sistema de autenticación utiliza la autenticación tradicional, que implica recopilar manualmente datos como el nombre de usuario, correo electrónico, contraseña, nombre y apellido del usuario.
Por diseño, el sistema de autenticación de Django es muy genérico y no proporciona muchas de las funciones que se utilizan en la mayoría de los sistemas de autenticación web actuales. Para complementar esto, querrás utilizar paquetes de terceros como el django-allauth paquete.
Cómo habilitar OAuth en Django
Para autenticar a sus usuarios usando OAuth en una aplicación Django, puede usar un paquete Django llamado django-allauth.
Django Allauth es un paquete que maneja la autenticación, el registro, la administración de cuentas y la autenticación de cuentas de terceros (sociales) para su proyecto Django. Los siguientes pasos lo guiarán hacia la configuración de Django Allauth para su proyecto Django.
Paso 1: instalar y configurar Django-Allauth
Si aún no lo has hecho, crear un entorno virtual e instalar django-allauth vía pip:
pip install django-allauth
Tenga en cuenta que debe utilizar Python 3.5 o superior y Django 2.0 o superior para que funcione.
Paso 2: agregue las aplicaciones necesarias a Django para Django-Allauth
Después de instalar django-allauth, abre tu configuración.py archivo y agregue las siguientes aplicaciones a su INSTALLED_APPS lista:
INSTALLED_APPS = [
Add your other apps here
# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
Aquí hay algunos puntos a tener en cuenta sobre algunas de las aplicaciones anteriores:
- El allauth.cuentasocial La aplicación permitirá a los usuarios iniciar sesión a través de aplicaciones sociales como X (anteriormente Twitter), Instagram, GitHub y otras.
- El django.contrib.sites La aplicación es un marco Django integrado que se requiere para django-allauth trabajar. La aplicación brinda la capacidad de administrar y diferenciar múltiples sitios dentro de un solo proyecto Django. Puedes entender cómo funciona consultando el documentación de Django.
Paso 3: Defina los backends de autenticación para su proyecto
El siguiente paso es definir cómo desea autenticar a sus usuarios. Puedes hacer esto configurando el AUTHENTICATION_BACKENDS en tus configuración.py archivo. Para django-allauth, deberías agregar estos:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
El fragmento de código anterior define dos motores de autenticación:
- El primero es el predeterminado utilizado por Django. Esto permitirá que el usuario administrador inicie sesión en el panel de administración independientemente de la configuración de django-allauth.
- El segundo define el backend de autenticación para django-allauth.
Paso 4: agregue la identificación de su sitio
En su archivo de configuración, debe agregar la ID de su sitio. He aquí un ejemplo:
SITE_ID = 1
Por defecto, hay un sitio llamado ejemplo.com en el panel de administración. Puede decidir modificar este sitio o agregar uno usted mismo. En cualquier caso, debe iniciar sesión en el panel de administración y navegar hasta el Sitios aplicación.
Para obtener el ID del sitio para un sitio Django, abra su Interfaz de línea de comando (CLI) y ejecuta este comando:
python manage.py shell
A continuación, escriba este script en el shell de Python:
from django.contrib.sites.models import Site
current_site = Site.objects.get_current()
site_id = current_site.id
site_name = current_site.name
print("Site ID:", site_id)
print("Site Name:", site_name)
El código anterior imprimirá el nombre del sitio así como su ID.
Paso 5: configure sus URL
En tu proyecto URL.py archivo, configure el patrón de URL para django-allauth. Así es como debería verse:
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
Con esta configuración, puede iniciar su servidor de desarrollo y navegar hasta http://127.0.0.1:8000/accounts/. Si usted tiene DEPURAR ajustado a Verdadero, debería ver una lista de patrones de URL disponibles para django-allauth.
Si ha hecho lo anterior, su proyecto debería estar listo para la autenticación social.
Cómo implementar el inicio de sesión/registro de Google en su aplicación Django
Después de configurar django-allauth, debería estar preparado para permitir que sus usuarios se autentiquen con sus cuentas sociales como Google.
Paso 1: registre su proveedor de cuenta social en sus aplicaciones instaladas
En tus configuración.py archivo, debe agregar el proveedor de la cuenta social en INSTALLED_APPS. En este caso, es Google. Otras opciones son Instagram, X, etc.
INSTALLED_APPS = [
Add your other apps here
# Social account provider (google)
'allauth.socialaccount.providers.google',
]
Paso 2: cree su ID de cliente y clave secreta en Google
Para completar este paso, debes tener una cuenta de Google creada. Si lo ha hecho, siga estos siguientes pasos:
- Dirígete al Consola de Google Cloud para crear un nuevo proyecto. Primero, haga clic en el menú desplegable que se muestra en la imagen a continuación:
- A continuación, haga clic en NUEVO PROYECTO:
- Ingrese un nombre para su proyecto, luego haga clic en el CREAR botón:
- Con tu proyecto seleccionado, haz clic en el menú de hamburguesas. Seleccionar API y servicios, entonces Cartas credenciales:
- A continuación, haga clic en la opción que dice CONFIGURAR LA PANTALLA DE CONSENTIMIENTO y seleccione Externo:
- En la página siguiente, ingrese un nombre para su aplicación e incluya un correo electrónico cuando sea necesario. También puede explorar las configuraciones para realizar algunas personalizaciones. Una vez hecho esto, haga clic en GUARDAR Y CONTINUAR.
- En el menú de la izquierda, seleccione Cartas credenciales. Después de eso, haga clic en CREAR CREDENCIALES y seleccione ID de cliente de OAuth.
- A continuación, seleccione el Tipo de aplicacion e ingrese un nombre para el mismo. Para este tutorial, el Tipo de aplicacion será Aplicación web.
- A continuación, agregue URI para el Orígenes de JavaScript autorizados y URI de redireccionamiento autorizados. El host de su sitio web debe ser el origen de JavaScript y el sistema redirigirá a los usuarios al URI de redireccionamiento después de la autenticación. El URI de redireccionamiento normalmente debería contener su-nombre-de-host/cuentas/google/login/callback/. Para el modo de desarrollo, será: http://127.0.0.1:8000/accounts/google/login/callback/. Haga clic en CREAR una vez hecho.
- Después de crear las credenciales, puede copiar su Identificación del cliente o secreto del cliente a un lugar seguro o descargarlos como archivos JSON.
Paso 3: agregue su ID de cliente y clave secreta a su aplicación Django
Después de crear las credenciales necesarias, navegue hasta http://127.0.0.1:8000/admin, seleccionar Aplicaciones socialesy crear una nueva aplicación social. Siga estos pasos para crear una nueva aplicación social:
- Agregue un proveedor. El proveedor se refiere a la aplicación con la que estás autenticando a tu usuario. En este caso es Google, en otro caso podría ser Snapchat.
- Ingrese un nombre para su nueva aplicación social. Asegúrate de que sea un nombre razonable.
- Pegar en el Identificación del cliente lo copiaste de Google.
- Para el Llave secreta, pegar en el secreto del cliente lo copiaste de Google.
- El Llave El campo no se aplica a la autenticación con Google, así que ignórelo.
- Finalmente, seleccione un sitio para asociar la aplicación social.
Paso 4: prueba tu autenticación de Google
Cierre sesión en su panel de administración y navegue hasta http://127.0.0.1:8000/accounts/login/. Verás una opción para iniciar sesión a través de Google.
Haga clic en él para redirigir a la pantalla de consentimiento. A continuación, seleccione una cuenta para iniciar sesión.
Una vez que haya seleccionado una cuenta, será redirigido a http://127.0.0.1:8000/accounts/profile/. Esto significa que su aplicación está funcionando perfectamente. Puede crear plantillas personalizadas para reemplazar las predeterminadas.
Mejora del registro de usuarios con autenticación social en Django
Habilitar la autenticación social es una excelente manera de ayudar a sus usuarios a tener una excelente experiencia al registrarse en su aplicación. Hay otras formas de habilitar la autenticación en Django y debes explorarlas para decidir cuál es la mejor para tu caso de uso.