Ce qui se passe
Le mode sudo de Symfony 8.2 vérifie quand l'utilisateur a saisi ses identifiants. Cette fonctionnalité, créditée à Nicolas Grekas, ajoute comment : lire ses factures peut se contenter d'un mot de passe, envoyer de l'argent peut exiger une clé de sécurité matérielle.
Ce que le jeton retient
Les jetons de sécurité conservent les méthodes prouvées pendant la session et la date de leur dernier usage.
- Les noms viennent de la RFC 8176, en constantes de la classe
AuthenticationMethod.form_login,json_loginethttp_basicdéclarentAuthenticationMethod::PASSWORD; l'authentificateur OpenID Connect lit la revendicationamrdu jeton d'identité. - Vos propres authentificateurs ajoutent
AuthenticationMethodBadgeau passeport avec les méthodes vérifiées. - Une reconnexion garde les méthodes précédentes : mot de passe puis clé de
sécurité donnent un jeton qui porte les deux.
getAuthenticationProofs()renvoie les noms en clés et les horodatages Unix en valeurs.
Réclamer mieux depuis un voter
En mode sudo, refuser IS_AUTHENTICATED_RECENTLY ou
IS_AUTHENTICATED_VERY_RECENTLY déclenche une ré-authentification plutôt qu'un
403. La 8.2 l'offre à vos voters : requestReAuthentication() sur l'objet
Vote. Une action protégée par un attribut à vous :
#[IsGranted('IS_SECURITY_KEY_USED')]lance le point d'entrée de ré-authentification du pare-feu quand l'utilisateur a
une clé mais ne s'en est pas servi dans la session. Ce point d'entrée lit
SecurityRequestAttributes::RE_AUTHENTICATION_ATTRIBUTE pour savoir quel
attribut a été refusé, et peut afficher l'invite de la clé plutôt que le mot de
passe. Limite : un seul attribut refusé ; un contrôle qui combine plusieurs
rôles renvoie toujours un 403.
Avec OpenID Connect
C'est le fournisseur qui refait l'authentification. Le paramètre acr_values
lui indique le niveau voulu, à n'ajouter que si le voter l'a demandé. C'est une
demande : le fournisseur peut faire autrement, et la revendication acr
obtenue est donc stockée dans l'attribut de jeton oidc_acr, que le voter
contrôle. phr et phrh viennent de la spécification OpenID Connect EAP ACR
Values ; toute valeur gérée par votre fournisseur convient.
Source : New in Symfony 8.2: Proving Authentication Methods, blog Symfony, 12 octobre 2026.