Authentification et droits : la sécurité sans friction.
Authentification par jetons (JWT) bien mise en œuvre : 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.
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é.
§ 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.phpphp
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
§ 01
Authentification simple
2 semaines
Jetons JWT + renouvellement + rôles classiques. Pour une API interne ou un SaaS B2B standard.
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 sur l'auth.
§ 01Jeton 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).
§ 02Duré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.
§ 03Signature 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.
§ 04Comment 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.
§ 05Inté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.
§ 06Conformité 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).
15 minutes pour savoir si on peut forger ensemble.
Un appel, pas un formulaire de 12 champs. Vous m'expliquez votre besoin, je vous dis honnêtement si je suis la bonne personne, on repart avec une prochaine étape claire.
01
Compte-rendu écrit et estimation envoyés sous 24 h.
02
Aucun engagement. Aucune relance commerciale.
03
Si ce n'est pas pour moi, je vous oriente vers un confrère.