Comprendre le mécanisme
L’en-tête JOSE arrive de l’extérieur. Le validateur doit vérifier que l’algorithme reçu appartient à une liste autorisée pour cette clé et cet usage. Il ne doit pas utiliser indifféremment des octets de clé publique comme secret MAC. L’acceptation d’un algorithme non signé ne doit jamais apparaître accidentellement dans un profil qui exige une signature.
Raisonner et vérifier
Séparez les validateurs de contextes différents : accès API, identité utilisateur et message interne peuvent avoir des règles incompatibles. Un type explicite peut aider à distinguer les profils lorsque leur spécification le prévoit, avec un contrôle effectif côté réception. Préférez les mécanismes de la bibliothèque aux branches manuelles sur alg. Testez des clés et types incohérents même lorsque la syntaxe du token est correcte.
Politique fermée
Le serveur fixe les algorithmes admis. L’entrée non fiable ne définit pas la politique. Une liste telle que RS256 est choisie côté validateur. Le porteur ne peut pas obtenir none ou une famille MAC en modifiant le header ; toute valeur hors contrat doit être rejetée.
Erreur fréquente à comprendre
alg reçu peut élargir librement la liste.
L’entrée non fiable ne définit pas la politique.
Compatibilité de clé
La clé doit être compatible avec l’algorithme. La confusion de familles doit être évitée. Associez chaque clé à son type, son algorithme et son usage. Une bibliothèque polyvalente ne doit pas traiter opportunément les octets d’une clé publique comme un secret MAC pour un autre profil.
Erreur fréquente à comprendre
Des octets de clé publique peuvent servir arbitrairement de secret MAC.
La confusion de familles doit être évitée.
Signature exigée
Un profil signé doit refuser une absence de signature. La signature requise ne peut être retirée par le message. Un profil signé refuse l’absence de preuve même si le JSON est correctement formé. Testez explicitement le cas non signé afin de vérifier qu’un mode de compatibilité ne contourne pas cette exigence.
Erreur fréquente à comprendre
none convient automatiquement à tout validateur JWT.
La signature requise ne peut être retirée par le message.
Type explicite
Un type explicite doit être vérifié lorsqu’il est requis. La déclaration doit participer à la décision. Lorsque le profil exige typ, comparez sa valeur attendue. Cette information contribue à séparer les usages, mais n’établit une confiance que lorsqu’elle fait partie des données protégées et validées.
Erreur fréquente à comprendre
Afficher typ suffit même si le validateur l’ignore.
La déclaration doit participer à la décision.
Profils distincts
Les validateurs de profils différents peuvent devoir être séparés. Les audiences et règles peuvent être incompatibles. Un jeton d’accès et un message interne peuvent partager des noms de claims. Séparez leurs validateurs ou leurs configurations de façon à empêcher une substitution fondée sur cette ressemblance superficielle.
Erreur fréquente à comprendre
Tout token interne est interchangeable avec un access token.
Les audiences et règles peuvent être incompatibles.
Usage et clé
La politique doit lier usage et clé. La possession de paramètres ne rend pas chaque usage légitime. Une clé admise pour un échange interne ne devient pas automatiquement valable pour un login utilisateur. Définissez la matrice émetteur, destinataire, type de token et ensemble de clés autorisé.
Erreur fréquente à comprendre
Une clé connue peut être utilisée pour toute finalité.
La possession de paramètres ne rend pas chaque usage légitime.
Cas nominal
Un test nominal doit accompagner les refus. Il doit reconnaître les entrées conformes au contrat. Un validateur qui rejette tout fait réussir tous les tests négatifs. Gardez une fixture valide pour chaque profil autorisé afin de prouver que la politique reste utilisable.
Erreur fréquente à comprendre
Un validateur qui refuse tout satisfait tout besoin d’authentification.
Il doit reconnaître les entrées conformes au contrat.
Toutes les opérations
La bibliothèque doit vérifier les opérations requises. Lire la structure ne vérifie pas la preuve. Une composition peut exiger vérification de signature, déchiffrement et contrôle de claims. Vérifiez que l’API de bibliothèque choisie exécute effectivement l’ensemble attendu avant de produire un objet de confiance.
Erreur fréquente à comprendre
Un parsing réussi remplace les contrôles cryptographiques.
Lire la structure ne vérifie pas la preuve.
Mises à jour
Les mises à jour de bibliothèque demandent une revue ciblée. L’outil ne choisit pas automatiquement toutes les règles métier. Relisez changements de comportement, défauts d’options et avis de sécurité de la bibliothèque. Rejouez surtout les tests de confusion de profil et d’algorithme sur la version réellement déployée.
Erreur fréquente à comprendre
Une dépendance maintenue garantit toute configuration applicative.
L’outil ne choisit pas automatiquement toutes les règles métier.
Avant les effets
Les décisions doivent être appliquées avant les effets. L’ordre des contrôles détermine l’absence d’effet interdit. Ne confiez les données au handler métier qu’après validation. Les traces privées peuvent décrire le refus, mais aucune réservation, émission de message ou modification de droit ne doit précéder la décision.
Erreur fréquente à comprendre
Un refus après écriture prouve une validation sûre.
L’ordre des contrôles détermine l’absence d’effet interdit.
Atelier guidé : lire, expliquer et vérifier le code
<?php
declare(strict_types=1);
$allowed = ['RS256'];
$received = 'none';
echo in_array($received, $allowed, true) ? 'allowed' : 'rejected'; Le tableau autorise uniquement RS256 et la valeur reçue est none ; in_array en mode strict retourne donc faux. Ce contrôle illustre une liste fermée, sans implémenter à lui seul un validateur JWT complet. Ajoutez ensuite la sélection de clé et les contrôles cryptographiques et de claims requis.
none n’appartient pas à la liste fermée. Le message ne peut élargir la politique. Le code ne génère pas de clé. Ce test de politique n’exécute pas la cryptographie.
Travail pratique : Dans un laboratoire, essayez un token sans signature, un algorithme hors liste et un type destiné à un autre flux.
Critères de correction : Les trois refusent avant l’autorisation métier. Conservez une fixture nominale pour éviter de créer un validateur qui rejette tout sans distinguer les cas.
Exemple commenté
Configuration attendue → algorithmes admis + clés liées + type de jeton
En-tête reçu → valeur à comparer à ce contratLe serveur détermine le contrat ; le message demande seulement à être évalué.
Exercice de mise en pratique
Dans un laboratoire, essayez un token sans signature, un algorithme hors liste et un type destiné à un autre flux.
Voir une proposition de correction
Les trois refusent avant l’autorisation métier. Conservez une fixture nominale pour éviter de créer un validateur qui rejette tout sans distinguer les cas.
Points de vérification
- Liste fermée.
- Clé liée à son usage.
- Profils distincts.
Contrôle de connaissances
Cours associé : 05. Algorithmes imposés et profils disjoints ↗Validation du module
101 questions, objectif pédagogique de 75 %. Durée conseillée de 150 minutes, sans limite imposée. Les questions et les choix sont mélangés ; le corrigé apparaît après validation. Le contrôle rapide de la leçon et l’examen final du cours restent des exercices distincts.
Commencer ou reprendre les 101 questions →Cette marque suit votre propre avancement ; elle ne certifie pas la maîtrise du sujet. Effectuez l’exercice avant de passer à la suite.
