Apprenez à créer un système de connexion sécurisé avec des comptes de réseaux sociaux dans Django à l'aide d'OAuth.

L'authentification sociale est un moyen de confirmer l'identité d'une personne via un compte social au lieu d'utiliser des mots de passe. Dans le développement Web, il est toujours utile d'authentifier les utilisateurs sans mot de passe. De cette façon, ils peuvent se connecter via des applications sociales comme Google, Twitter ou GitHub.

L'activation de l'authentification sociale est un excellent moyen d'améliorer la sécurité de votre application en réduisant le risque de vulnérabilités courantes liées aux mots de passe. Cela améliorera également l'expérience utilisateur de votre application, car les utilisateurs n'auront pas besoin de se souvenir de nombreux mots de passe.

Authentification utilisateur dans Django

Django fournit un système d'authentification par défaut avec lequel les développeurs peuvent travailler. Cependant, ce système d'authentification utilise l'authentification traditionnelle, qui implique la collecte manuelle de données telles que le nom d'utilisateur, l'e-mail, le mot de passe, le prénom et le nom de l'utilisateur.

instagram viewer

De par sa conception, le système d'authentification de Django est très générique et ne fournit pas de nombreuses fonctionnalités utilisées aujourd'hui dans la plupart des systèmes d'authentification Web. Pour compléter cela, vous souhaiterez utiliser des packages tiers tels que Django-Allauth emballer.

Comment activer OAuth dans Django

Pour authentifier vos utilisateurs à l'aide d'OAuth dans une application Django, vous pouvez utiliser un package Django appelé Django-Allauth.

Django Allauth est un package qui gère l'authentification, l'enregistrement, la gestion des comptes et l'authentification des comptes tiers (sociaux) pour votre projet Django. Les étapes suivantes vous guideront vers la configuration de Django Allauth pour votre projet Django.

Étape 1: Installer et configurer Django-Allauth

Si vous ne l'avez pas encore fait, créer un environnement virtuel et installer Django-Allauth via pip :

pip install django-allauth

Notez que vous devez utiliser Python 3.5 ou supérieur et Django 2.0 ou supérieur pour que cela fonctionne.

Étape 2: Ajouter les applications requises à Django pour Django-Allauth

Après l'installation Django-Allauth, Ouvrez votre paramètres.py fichier et ajoutez les applications suivantes à votre INSTALLED_APPS liste:

INSTALLED_APPS = [


Add your other apps here

# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]

Voici quelques points à noter concernant certaines des applications ci-dessus :

  • Le allauth.socialaccount L'application permettra aux utilisateurs de se connecter via des applications sociales telles que X (anciennement Twitter), Instagram, GitHub et autres.
  • Le django.contrib.sites app est un framework Django intégré requis pour Django-Allauth travailler. L'application offre la possibilité de gérer et de différencier plusieurs sites au sein d'un seul projet Django. Vous pouvez comprendre son fonctionnement en vous référant au Documentation Django.

Étape 3: définissez les backends d'authentification pour votre projet

L'étape suivante consiste à définir la manière dont vous souhaitez authentifier vos utilisateurs. Vous pouvez le faire en configurant le AUTHENTICATION_BACKENDS dans ton paramètres.py déposer. Pour Django-Allauth, vous devez ajouter ceci :

AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]

L'extrait de code ci-dessus définit deux backends d'authentification :

  1. Le premier est celui utilisé par défaut par Django. Cela permettra à l'utilisateur administrateur de se connecter au panneau d'administration quelle que soit la configuration de Django-allauth.
  2. Le second définit le backend d'authentification pour Django-Allauth.

Étape 4: ajoutez votre identifiant de site

Dans votre fichier de paramètres, vous devez ajouter l'ID de votre site. Voici un exemple :

SITE_ID = 1

Par défaut, il existe un site appelé exemple.com dans le panneau d'administration. Vous pouvez décider de modifier ce site ou d'en ajouter un pour vous-même. Dans les deux cas, vous devez vous connecter au panneau d'administration et accéder au Des sites application.

Pour obtenir l'ID de site d'un site Django, ouvrez votre Interface de ligne de commande (CLI) et exécutez cette commande :

python manage.py shell

Ensuite, écrivez ce script dans le shell 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)

Le code ci-dessus imprimera le nom du site ainsi que son identifiant.

Étape 5: Configurez vos URL

Dans votre projet URL.py fichier, configurez le modèle d'URL pour Django-Allauth. Voici à quoi cela devrait ressembler :

from django.urls import path, include

urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]

Avec cette configuration, vous pouvez démarrer votre serveur de développement et accéder à http://127.0.0.1:8000/accounts/. Si tu as DÉBOGUER mis à Vrai, vous devriez voir une liste des modèles d'URL disponibles pour Django-Allauth.

Si vous avez effectué ce qui précède, votre projet devrait être prêt pour l'authentification sociale.

Comment implémenter la connexion/inscription Google dans votre application Django

Après la mise en place Django-Allauth, vous devriez être prêt à permettre à vos utilisateurs de s'authentifier auprès de leurs comptes sociaux tels que Google.

Étape 1: Enregistrez votre fournisseur de compte social dans vos applications installées

Dans ton paramètres.py fichier, vous devez ajouter le fournisseur de compte social dans INSTALLED_APPS. Dans ce cas, il s'agit de Google. Les autres options sont Instagram, X, etc.

INSTALLED_APPS = [


Add your other apps here

# Social account provider (google)
'allauth.socialaccount.providers.google',
]

Étape 2: Créez votre identifiant client et votre clé secrète sur Google

Pour terminer cette étape, vous devez avoir créé un compte Google. Si vous l'avez fait, suivez ces étapes suivantes :

  1. Rendez-vous au Console Google Cloud pour créer un nouveau projet. Tout d’abord, cliquez sur le menu déroulant affiché dans l’image ci-dessous :
  2. Ensuite, cliquez sur NOUVEAU PROJET:
  3. Entrez un nom pour votre projet, puis cliquez sur le bouton CRÉER bouton:
  4. Votre projet étant sélectionné, cliquez sur la carte des hamburgers. Sélectionner API et services, alors Informations d'identification:
  5. Ensuite, cliquez sur l'option qui dit CONFIGURER L'ÉCRAN DE CONSENTEMENT et sélectionnez Externe:
  6. Sur la page suivante, saisissez un nom pour votre application et incluez un e-mail si nécessaire. Vous pouvez également explorer les configurations pour une certaine personnalisation. Une fois terminé, cliquez sur SAUVEGARDER ET CONTINUER.
  7. Dans le menu de gauche, sélectionnez Informations d'identification. Après cela, cliquez sur CRÉER DES IDENTIFIANTS et sélectionnez ID client OAuth.
  8. Ensuite, sélectionnez le Type de demande et entrez un nom pour celui-ci. Pour ce tutoriel, le Type de demande sera application Web.
  9. Ensuite, ajoutez les URI pour le Origines JavaScript autorisées et URI de redirection autorisés. L'hébergeur de votre site Web doit être l'origine JavaScript et le système redirigera les utilisateurs vers l'URI de redirection après authentification. L'URI de redirection doit généralement contenir votre-nom-d'hôte/accounts/google/login/callback/. Pour le mode développement, ce sera: http://127.0.0.1:8000/accounts/google/login/callback/. Cliquer sur CRÉER une fois terminé.
  10. Après avoir créé les informations d'identification, vous pouvez copier votre identité du client ou Secret client dans un endroit sûr ou téléchargez-les sous forme de fichiers JSON.

Étape 3: ajoutez votre identifiant client et votre clé secrète à votre application Django

Après avoir créé les informations d'identification nécessaires, accédez à http://127.0.0.1:8000/admin, sélectionner Applications sociales, et créez une nouvelle application sociale. Suivez ces étapes pour créer une nouvelle application sociale :

  1. Ajoutez un fournisseur. Le fournisseur fait référence à l'application avec laquelle vous authentifiez votre utilisateur. Dans ce cas, il s’agit de Google, dans un autre cas, il peut s’agir de Snapchat.
  2. Entrez un nom pour votre nouvelle application sociale. Assurez-vous que c'est un nom raisonnable
  3. Coller dans le identité du client vous avez copié depuis Google.
  4. Pour le Clef secrète, collez-y le Secret client vous avez copié depuis Google.
  5. Le Clé Le champ ne s'applique pas à l'authentification auprès de Google, alors ignorez-le.
  6. Enfin, sélectionnez un site auquel associer l'application sociale.

Étape 4: testez votre authentification Google

Déconnectez-vous de votre panneau d'administration et accédez à http://127.0.0.1:8000/accounts/login/. Vous verrez une option pour vous connecter via Google.

Cliquez dessus pour rediriger vers l'écran de consentement. Ensuite, sélectionnez un compte avec lequel vous connecter.

Une fois que vous aurez sélectionné un compte, vous serez redirigé vers http://127.0.0.1:8000/accounts/profile/. Cela signifie que votre application fonctionne parfaitement. Vous pouvez créer des modèles personnalisés pour remplacer ceux par défaut.

Améliorer l'enregistrement des utilisateurs avec l'authentification sociale dans Django

L'activation de l'authentification sociale est un excellent moyen d'aider vos utilisateurs à vivre une excellente expérience en s'inscrivant à votre application. Il existe d'autres moyens d'activer l'authentification dans Django, et vous devez les explorer pour décider ce qui convient le mieux à votre cas d'utilisation.