Comment utiliser AWS Cognito avec Django

AWS Cognito est un puissant service qui peut être intégré avec Django pour assurer une gestion sécurisée et efficace des utilisateurs. Dans ce guide, nous vous expliquerons les étapes pour configurer et utiliser AWS Cognito avec Django.

Configurer AWS Cognito

  1. Accédez à la console de gestion AWS et naviguez vers le service Cognito.
  2. Créez un nouveau groupe d’utilisateurs et configurez les paramètres nécessaires tels que les attributs utilisateur, la politique de mot de passe et la vérification par e-mail.
  3. Configurez un client d’application dans le groupe d’utilisateurs, qui sera utilisé pour l’authentification.
  4. Notez l’identifiant du groupe d’utilisateurs et l’identifiant du client d’application, car nous en aurons besoin dans la configuration Django.

Installer et configurer Django Cognito

  1. Installez le package django-cognito avec pip :
Terminal window
pip install django-cognito
  1. Ajoutez 'django_cognito' à la liste INSTALLED_APPS dans le fichier de paramètres de votre projet Django.

  2. Configurez les paramètres AWS Cognito dans le fichier de paramètres :

COGNITO_USER_POOL_ID = 'your-user-pool-id'
COGNITO_APP_CLIENT_ID = 'your-app-client-id'
COGNITO_AWS_REGION = 'your-aws-region'

Implémenter l’authentification

  1. Créez une vue Django pour l’authentification des utilisateurs. Cette vue gérera les fonctionnalités de connexion et de déconnexion avec AWS Cognito. Voici un exemple :
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import redirect, render
def login_view(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('dashboard') # Redirect to the dashboard page
else:
error_message = "Invalid username or password"
else:
error_message = ""
return render(request, 'login.html', {'error_message': error_message})
  1. Créez un template de connexion (login.html) incluant un formulaire pour la saisie du nom d’utilisateur et du mot de passe. Affichez la variable error_message en cas d’échec de l’authentification.

Sécuriser vos vues

  1. Utilisez le décorateur @login_required sur les vues qui nécessitent une authentification. Cela garantit que seuls les utilisateurs connectés peuvent accéder à ces vues.
from django.contrib.auth.decorators import login_required
@login_required
def dashboard_view(request):
# Your code here
return render(request, 'dashboard.html')
  1. Vous pouvez également utiliser le décorateur @permission_required pour restreindre l’accès en fonction des permissions des utilisateurs.

Fonctionnalités supplémentaires

AWS Cognito offre des fonctionnalités supplémentaires comme l’inscription des utilisateurs, la réinitialisation du mot de passe et la vérification par e-mail. Vous pouvez implémenter ces fonctionnalités en utilisant le package django-cognito et l’API AWS Cognito.

C’est tout ! Vous avez réussi à intégrer AWS Cognito avec Django. Avec cette configuration, vous pouvez assurer une gestion sécurisée des utilisateurs avec un minimum d’effort et de maintenance.

Pour plus d’informations, consultez la documentation AWS Cognito et le package django-cognito sur Pypi.