Dans l'article précédent, nous avons examiné les concepts de base et le fonctionnement d'OAuth2. Dans cet article, nous nous concentrerons sur la façon de configurer un serveur d'authentification OAuth2 en utilisant le Django OAuth Toolkit (DOT).
1. Installation de Django OAuth Toolkit
Pour implémenter un serveur OAuth2, vous devez d'abord installer le Django OAuth Toolkit (DOT). Vous pouvez l'installer avec une simple commande :
pip install django-oauth-toolkit
Une fois l'installation terminée, ajoutez oauth2_provider
à INSTALLED_APPS
et exécutez les migrations.
Après la migration, vous pourrez voir le menu supplémentaire proposé par DOT dans la page d'administration de Django.
2. Exploration des nouveaux menus dans l'Admin
Lors de l'installation de DOT, 5 nouveaux menus sont ajoutés à l'administration de Django :
1) Access tokens
- Gère les jetons d'accès émis.
- Vous pouvez vérifier la durée de validité de chaque jeton, l'application cliente associée et les informations de l'utilisateur.
- Les jetons d'accès sont des clés utilisées par les clients authentifiés pour accéder aux ressources protégées.
2) Refresh tokens
- Gère les jetons de rafraîchissement.
- Utilisés pour obtenir un nouveau jeton d'accès lorsque l'ancien a expiré.
- Cela permet aux utilisateurs d'effectuer des actions consécutives sans avoir à se réauthentifier.
3) Application
- Enregistre et gère les applications clientes OAuth2.
- Les applications doivent être enregistrées pour communiquer avec le serveur d'authentification, avec divers champs de configuration fournis.
4) Grant
- Gère les codes d'autorisation.
- Un code d'autorisation est une clé temporaire nécessaire à l'application cliente pour demander un jeton d'accès.
5) ID tokens
- Gère les jetons ID émis.
- Les jetons ID sont utilisés lors de la combinaison d'OAuth2 et d'OpenID Connect (OIDC), et contiennent des informations d'authentification de l'utilisateur et d'application cliente.
- Utilisé lorsque le client récupère des informations utilisateur via le protocole OpenID Connect.
3. Explication détaillée du menu Application
Le cœur du serveur OAuth2 est l'enregistrement des applications clientes. Dans le menu Application
, vous pouvez définir les champs suivants :
1) Name
Le nom de l'application. Rédigez-le clairement pour que les administrateurs puissent l'identifier facilement.
2) Client ID
C'est l'identifiant unique de l'application. Utilisé par le serveur OAuth2 pour identifier le client, il est généré automatiquement.
3) Client Secret
La clé secrète utilisée lors de l'authentification du client. S'applique uniquement aux applications serveur (Confidential) et doit être conservée en sécurité.
4) Client Type
Le type d'application cliente :
- Confidential : Application serveur capable de stocker la clé secrète en toute sécurité.
- Public : Applications mobiles ou SPA (Single Page Application) qui ne peuvent pas stocker de clé secrète.
5) Authorization Grant Type
La méthode d'authentification que l'application cliente utilisera. Principales options :
- Authorization Code : La méthode la plus courante et la plus sécurisée.
- Password : Authentifie en demandant directement l'identifiant/mot de passe de l'utilisateur.
- Client Credentials : Adapté pour la communication entre serveurs.
6) Redirect URIs
Les URL de l'application cliente où le Code d'Autorisation ou le Jeton d'Accès sera envoyé après une authentification réussie.
- Important : Doit correspondre exactement à la configuration côté client.
- Si les URL ne correspondent pas, le serveur OAuth2 ne transmettra pas le code d'autorisation ou le jeton.
- Il est recommandé d'utiliser HTTPS pour des raisons de sécurité.
7) Algorithm
Spécifie l'algorithme utilisé pour le cryptage des jetons. La valeur par défaut est RS256
, qui est un algorithme de signature basé sur RSA.
- RS256 : Utilise un chiffrement asymétrique, vérifiant la signature avec une clé publique.
- Peut être changé en d'autres algorithmes si nécessaire.
8) Skip Authorization
Si défini sur True
, accorde automatiquement des permissions à l'application cliente sans approbation de l'utilisateur.
Utile dans des systèmes internes ou des applications de confiance.
4. Résumé et étapes suivantes
Dans cet article, nous avons examiné comment configurer un serveur OAuth2 en nous concentrant sur le menu d'administration de Django OAuth Toolkit (DOT) et en particulier sur le champ Application
. Cela nous a permis de comprendre le processus d'enregistrement des applications clientes et le rôle de chaque champ.
Dans le prochain article, nous plongerons plus en profondeur dans le Client Type mentionné dans ce post. En particulier, nous comparerons les types Confidential et Public, et expliquerons en détail comment ces deux types sont utilisés dans OAuth2. Nous prévoyons également d'aborder les sujets suivants :
- La relation entre Client Type et PKCE : Pourquoi PKCE (Proof Key for Code Exchange) est important pour les clients publics.
- Le rôle du Client Secret : Comment la clé secrète est utilisée dans le client confidentiel.
- Le flux de la méthode Authorization Code et PKCE : Nous explorerons le cœur du Grant Type le plus couramment utilisé dans OAuth2.
Pour bien comprendre le flux de la méthode Authorization Code, il est essentiel de connaître l'interaction entre PKCE et le Client Type. Nous aborderons ce sujet en profondeur dans le prochain article.

Add a New Comment