Quickstart Django
Ajoutez l'authentification à votre application Django en 5 minutes en utilisant le paquet django-syauth.
Avant de commencer
Vous avez besoin de ces identifiants avant de commencer. Obtenez-les depuis le Tableau de bord SyAuth.
| Ce dont vous avez besoin | Où le trouver | Exemple |
|---|---|---|
| Client ID | Tableau de bord → Clients OAuth → Votre App | a1b2c3d4-5678-90ab-cdef-... |
| Clé API | Tableau de bord → Clés API | xxxxxxxxxxxxx |
Nouveau sur SyAuth ? Suivez d'abord ces étapes :
- Créez un compte Nexorix (SyAuth utilise Nexorix pour l'authentification)
- Créez votre première Application pour obtenir vos identifiants
- Choisissez le type Client Public (recommandé, utilise PKCE)
- Ajoutez
http://localhost:8000/auth/callback/comme URI de redirection
Prérequis
- Python 3.8+ et Django 4.2+
- Un compte SyAuth avec une Application créée
Étape 1 : Installer le SDK
pip install django-syauth
Ce paquet gère l'authentification OAuth, la gestion des tokens et la création d'utilisateur automatiquement.
Étape 2 : Configurer les Paramètres
Mettez à jour votre settings.py avec la configuration SyAuth :
# settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Ajouter django_syauth
'django_syauth',
]
# Ajouter le backend d'authentification SyAuth
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend', # Garder pour l'accès admin
'django_syauth.backend.SyAuthBackend', # Ajouter l'authentification SyAuth
]
# Configuration SyAuth
# Obtenez ces valeurs depuis Tableau de bord → Clients OAuth → Votre App
SYAUTH = {
# L'endpoint API SyAuth (inclure /e/v1 à la fin)
'API_URL': 'https://api.syauth.com/e/v1',
# Votre Client ID depuis le Tableau de bord
'CLIENT_ID': 'votre-client-id-ici',
# Votre Clé API depuis Tableau de bord → Clés API
'API_KEY': 'votre-cle-api-ici',
# Où SyAuth redirige après la connexion - doit correspondre à la config du Tableau de bord !
'REDIRECT_URI': 'http://localhost:8000/auth/callback/',
}
# Paramètres de connexion/déconnexion Django
LOGIN_URL = '/auth/login/' # Rediriger ici quand @login_required échoue
LOGIN_REDIRECT_URL = '/' # Rediriger ici après connexion réussie
LOGOUT_REDIRECT_URL = '/' # Rediriger ici après déconnexion
Paramètres de Configuration
| Paramètre | Requis | Description |
|---|---|---|
API_URL | ✅ | Endpoint API SyAuth. Toujours inclure /e/v1 à la fin |
CLIENT_ID | ✅ | Identifiant public de votre application depuis le Tableau de bord |
API_KEY | ✅ | Votre Clé API d'espace de travail pour les opérations backend |
REDIRECT_URI | ✅ | Doit correspondre exactement à l'URI de redirection dans votre Tableau de bord |
Bonne pratique de production : Utilisez des variables d'environnement pour les secrets :
import os
SYAUTH = {
'API_URL': os.environ.get('SYAUTH_API_URL'),
'CLIENT_ID': os.environ.get('SYAUTH_CLIENT_ID'),
'API_KEY': os.environ.get('SYAUTH_API_KEY'),
'REDIRECT_URI': os.environ.get('SYAUTH_REDIRECT_URI'),
}
Étape 3 : Configurer les URLs
Ajoutez les routes d'authentification SyAuth au urls.py de votre projet :
# votre_projet/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# Ajouter les routes d'authentification SyAuth
path('auth/', include('django_syauth.urls')),
# Routes de votre application...
path('', include('votre_app.urls')),
]
Ce que cela ajoute :
| URL | Objectif |
|---|---|
/auth/login/ | Redirige vers la page de Login Universel SyAuth |
/auth/callback/ | Gère le callback OAuth, échange le code contre des tokens, crée/met à jour l'utilisateur |
/auth/logout/ | Déconnecte l'utilisateur de Django et SyAuth |
Étape 4 : Créer les Liens de Connexion/Déconnexion
Ajoutez des liens de connexion et déconnexion à vos templates :
<!-- templates/base.html -->
<!DOCTYPE html>
<html>
<head>
<title>Mon App Django</title>
</head>
<body>
<nav>
{% if user.is_authenticated %}
<span>Bienvenue, {{ user.first_name }} !</span>
<a href="{% url 'syauth:logout' %}">Se déconnecter</a>
{% else %}
<a href="{% url 'syauth:login' %}">Se connecter</a>
{% endif %}
</nav>
<main>
{% block content %}{% endblock %}
</main>
</body>
</html>
Étape 5 : Protéger les Vues
Utilisez le décorateur standard Django @login_required pour protéger les vues :
# views.py
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
@login_required
def dashboard(request):
# request.user est un objet User Django standard
# peuplé avec les données de SyAuth (email, prenom, nom)
return render(request, 'dashboard.html', {
'user': request.user
})
@login_required
def profile(request):
return render(request, 'profile.html', {
'email': request.user.email,
'first_name': request.user.first_name,
'last_name': request.user.last_name,
})
Pour les vues basées sur les classes, utilisez LoginRequiredMixin :
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import TemplateView
class DashboardView(LoginRequiredMixin, TemplateView):
template_name = 'dashboard.html'
Comment ça marche : Quand un utilisateur non authentifié essaie d'accéder à une vue protégée, Django le redirige automatiquement vers /auth/login/, qui redirige vers SyAuth. Après connexion, il est renvoyé vers sa destination d'origine.
Testez Votre Intégration
-
Exécutez les migrations (si nécessaire) :
python manage.py migrate -
Démarrez le serveur de développement :
python manage.py runserver -
Ouvrez http://localhost:8000
-
Cliquez sur "Se connecter"
- Vous serez redirigé vers la page de connexion SyAuth
- Connectez-vous ou créez un compte
- Vous serez redirigé vers votre application, maintenant authentifié !
Terminé ! 🎉
Votre application Django a maintenant :
- ✅ Authentification OAuth 2.0 avec PKCE
- ✅ Création et synchronisation automatique des utilisateurs
- ✅ Gestion de session
- ✅ Vues protégées avec
@login_required - ✅ Intégration User Django standard
Configuration Avancée
Modèle Utilisateur Personnalisé
Si vous utilisez un modèle utilisateur personnalisé, django-syauth le détecte et l'utilise automatiquement. Assurez-vous que votre modèle a ces champs :
# models.py
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
# Ces champs sont requis pour l'intégration SyAuth
email = models.EmailField(unique=True)
first_name = models.CharField(max_length=150)
last_name = models.CharField(max_length=150)
# Vous pouvez ajouter des champs supplémentaires
avatar_url = models.URLField(blank=True)
Mapping de Claims Personnalisé
Mappez des claims supplémentaires du token ID vers les champs de votre modèle utilisateur :
# settings.py
SYAUTH = {
'API_URL': 'https://api.syauth.com/e/v1',
'CLIENT_ID': 'votre-client-id',
'REDIRECT_URI': 'http://localhost:8000/auth/callback/',
# Mapper les claims JWT vers les champs du modèle utilisateur
'CLAIMS_MAPPING': {
'picture': 'avatar_url', # Mappe le claim 'picture' → champ 'avatar_url'
'locale': 'language', # Mappe le claim 'locale' → champ 'language'
},
}
Dépannage
Erreur "Invalid redirect_uri"
Cause : L'REDIRECT_URI dans les paramètres ne correspond pas à la configuration de votre Tableau de bord.
Solution :
- Allez dans Tableau de bord → Clients OAuth → Votre App → URIs de redirection
- Assurez-vous que
http://localhost:8000/auth/callback/est listé (notez le slash final !) - L'URI doit correspondre exactement
Erreur "Unauthorized / Invalid Client"
Cause : Votre Application n'est pas configurée comme Client Public ou le Client ID est incorrect.
Solution :
- Allez dans Tableau de bord → Clients OAuth → Votre App.
- Assurez-vous que Type de Client est défini sur Public (requis pour le flux PKCE).
- Vérifiez que le
CLIENT_IDdans vos paramètres correspond à celui du Tableau de bord.
Utilisateur Non Créé Après Connexion
Cause : Champs requis manquants dans votre modèle utilisateur personnalisé.
Solution : Assurez-vous que votre modèle utilisateur a les champs email, first_name, et last_name.
La Session Expire Immédiatement
Cause : Middleware de session mal configuré.
Solution : Assurez-vous que django.contrib.sessions.middleware.SessionMiddleware est dans votre paramètre MIDDLEWARE.
Prochaines Étapes
- Référence SDK Django — Documentation complète du SDK
- Gestion Utilisateur — Gérer les utilisateurs programmatiquement
- Personnaliser la Page de Connexion — Personnalisez l'expérience de connexion
- Bonnes Pratiques de Sécurité — Directives de sécurité pour la production