§ 03 / 05 — AUTHENTIFICATION JWT & OAUTH2

JWT API Platform : authentification et droits sans friction.

Authentification par jetons (JWT) bien mise en œuvre avec API Platform : jetons courts, renouvellement automatique, signature forte, révocation, journal d'audit. OAuth2 pour l'intégration avec des services tiers, droits fins par ressource, et traçabilité complète.

§ 01 — Le problème

Le problème avec l'authentification JWT.

Sans expert
  • Jetons immortels — Qui ne meurent jamais — voler un jeton = accès à vie.
  • Secret partagé entre services — Un seul service compromis = tous compromis.
  • Pas de révocation — Impossible d'exclure un utilisateur compromis en urgence.
  • Droits binaires — ADMIN ou pas — impossible de gérer la nuance des permissions.
  • Aucun journal d'audit — Impossible de savoir qui a fait quoi sur l'API, après incident.
Avec Vulcain
  • Jeton d'accès 15 min + jeton de renouvellement 7 jours remplacé à chaque usage
  • Signature forte avec clé privée serveur
  • Liste de révocation instantanée
  • Droits fins (rôles + permissions + règles par ressource)
  • Journal d'audit complet exportable.
§ 02 — Ce qui est livré

Ce qui est livré : JWT API Platform prêt pour la prod.

§ 01

Jetons courts + renouvellement

Jeton d'accès 15 min, jeton de renouvellement 7 jours remplacé à chaque usage, stockage sécurisé dans un cookie non accessible au JavaScript, protection contre les usages détournés.

  • Accès 15 min
  • Renouvellement 7 j
  • Cookie sécurisé
  • Anti-détournement
§ 02

Signature forte

Clé privée côté serveur API seulement, clé publique distribuable aux consommateurs. Pas de secret partagé. Rotation possible sans coupure.

  • Signature asymétrique
  • Clé publique distribuable
  • Rotation de clés
  • Vérification standardisée
§ 03

OAuth2 pour vos partenaires

Protocole standard OAuth2 pour les intégrations tierces (se connecter avec Google, Microsoft, ou votre propre serveur), permissions demandées à l'utilisateur.

  • Flux sécurisé utilisateur
  • Identifiants machine à machine
  • Permissions fines
  • Standards respectés
§ 04

Droits fins par ressource

Rôles (ADMIN, UTILISATEUR) + permissions précises (lire produit, modifier produit) + règles métier par ressource (« ce commercial voit sa zone seulement »).

  • Rôles utilisateurs
  • Permissions fines
  • Règles métier
  • Hiérarchie
§ 05

Révocation instantanée

Liste de révocation en cache mémoire rapide. Une révocation d'utilisateur coupe tous ses accès en moins d'une seconde.

  • Liste de révocation
  • Exclusion < 1 s
  • API d'administration
  • Événement déconnexion
§ 06

Journal d'audit

Chaque action enregistrée : utilisateur, adresse IP, endpoint, horodatage, résultat. Export CSV, durée de conservation paramétrable.

  • Journal par action
  • IP + navigateur
  • Conservation paramétrable
  • Export CSV
src/Security/Voter/ProductVoter.php php
final class ProductVoter extends Voter
{
    public const VIEW = 'product:view';
    public const EDIT = 'product:edit';

    protected function supports(string $attribute, mixed $subject): bool
    {
        return in_array($attribute, [self::VIEW, self::EDIT], true)
            && $subject instanceof Product;
    }

    protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool
    {
        $user = $token->getUser();
        if (!$user instanceof User) {
            return false;
        }

        return match ($attribute) {
            self::VIEW => $subject->getTenant() === $user->getTenant(),
            self::EDIT => $user->hasPermission('product:write')
                && $subject->getTenant() === $user->getTenant(),
        };
    }
}

Une règle d'accès métier centralise la décision « qui a le droit de faire quoi ». Le jeton apporte l'identité ; la permission se décide ici.

§ 04 — Tarifs & délais

Offres authentification JWT API Platform.

§ 01

Authentification simple

2 semaines

Jetons JWT + renouvellement + rôles classiques. Pour une API interne ou un SaaS B2B standard.

  • Signature forte
  • Renouvellement automatique
  • Rôles utilisateurs
  • Révocation instantanée
  • Tests
§ 02

Droits fins complets

3 à 4 semaines

Tout du simple + permissions fines, règles métier, journal d'audit, API d'administration.

  • Tout du simple
  • Permissions fines
  • Règles métier
  • Journal d'audit
  • API d'administration
§ 03

Serveur OAuth2

5 à 10 semaines

Serveur OAuth2 complet pour devenir fournisseur d'identité : connexion utilisateur, accès machine à machine, permissions fines, portail client.

  • Tout des droits fins
  • Serveur OAuth2
  • Connexion utilisateur
  • Permissions
  • Portail client

Tarifs sur devis après cadrage · forfait ou régie selon le format

Un budget à valider ? Cadrons-le en 30 minutes.

§ 05 — Cas client · SaaS santé · 5 000 pros connectés

SaaS santé HDS

SaaS en hébergement HDS (Hébergeur de Données de Santé). Authentification par jetons avec signature forte, droits fins à 4 niveaux, journal d'audit exportable pour la CNIL, révocation instantanée en cas d'incident.

  • Authentification JWT
  • Droits fins Symfony
  • Redis
  • API Platform
5 000+
Utilisateurs actifs
HDS
Conformité validée
< 1 s
Révocation utilisateur
§ 04 — Questions fréquentes

Questions JWT API Platform.

§ 01 Authentification JWT API Platform, concrètement ça couvre quoi ?
Jetons courts (15 min) avec renouvellement automatique, signature forte RS256, rôles et permissions fines par ressource, révocation instantanée en cas d'incident, et journal d'audit exportable. Le tout branché nativement sur API Platform, sans bibliothèque tierce à maintenir. Détail de la création d'API REST et de sa documentation OpenAPI sur les pages dédiées.
§ 02 Jeton dans le navigateur ou dans un cookie ?

Cookie sécurisé, non accessible au JavaScript, envoyé uniquement en HTTPS, limité au domaine de confiance par défaut. Le stockage navigateur classique est vulnérable aux attaques ; le cookie sécurisé ne l'est pas. Pour une API mobile, stockage sécurisé natif (Keychain iOS, Keystore Android).

§ 03 Durée de vie des jetons ?

Accès 15 min, renouvellement 7 jours. Compromis entre sécurité (court = moins d'impact en cas de fuite) et confort (pas de reconnexion incessante). Ajustable selon votre contexte.

§ 04 Signature forte ou partagée ?

Signature forte (clé privée serveur seulement) toujours pour une API publique ou distribuée. Signature partagée acceptable pour un monolithe où la clé ne sort pas. La signature forte permet de distribuer la clé publique sans risque.

§ 05 Comment révoquer un jeton ?

Les jetons étant auto-portants, la seule façon est une liste de révocation en cache rapide avec durée de vie égale à la durée restante du jeton. Sur révocation d'un utilisateur, on invalide son jeton de renouvellement, ce qui coupe les accès futurs sous 15 min.

§ 06 Intégration avec votre annuaire d'entreprise (SSO) ?

Oui : protocole SAML 2.0 via OneLogin, Okta, Azure AD. Pour les clients B2B, c'est souvent demandé. Déjà intégré sur plusieurs projets.

§ 07 Conformité RGPD et audit ?

Journal d'audit horodaté de chaque action, conservation paramétrable (12 mois en standard), export CSV pour les demandes d'accès RGPD, suppression possible sur demande (droit à l'oubli).

§ 08 Un agent IA tiers (Ojin, LLM) consomme mon API : comment unifier l'authentification ?
Le jeton de l'agent IA ne remplace pas votre JWT applicatif : on le propage côté serveur uniquement, jamais exposé au navigateur, avec réconciliation d'identité entre les deux systèmes. Détail de cette intégration sur la page Intégration Ojin AI + API Platform.
§ 09 Vous gérez des règles plus fines qu'un simple rôle ADMIN/UTILISATEUR ?
Oui, via des Voters Symfony : chaque règle métier (« ce commercial voit sa zone seulement ») devient une classe testée isolément, pas un enchevêtrement de conditions dans les contrôleurs. Le même modèle structure nos CRM Symfony sur mesure quand plusieurs profils doivent voir des données différentes. Détail des Voters dans notre article dédié à la sécurité Symfony avancée.
§ 06 — Voir aussi
§ 08 — Mettre la forge au travail

30 minutes pour savoir
si on peut forger ensemble.

Un diagnostic express, gratuit et sans engagement. Vous m'expliquez votre besoin, je vous dis honnêtement si je suis la bonne personne, et vous repartez avec 3 recommandations concrètes pour votre projet.

  • 01
    3 recommandations concrètes sur votre projet, à la fin de l'appel.
  • 02
    Aucun engagement. Aucune relance commerciale.
  • 03
    Si ce n'est pas pour moi, je vous oriente vers un confrère.