Authentification Json Web Token - Symfony
Installation du bundle
Pour installer le bundle, nous allons utiliser composer
.
Génération d’une paire de clés
Pour générer une paire de clés, nous utiliserons la commande du bundle. Cette commande crée 2 clés (privée et publique) dans le répertoire config/jwt/
, private.pem
et public.pem
.
Mise à jour du fichier security.yaml
Nous devons modifier le fichier security.yaml
, nous pourrons l’ajuster en fonction de nos besoins.
Configuration API Platform
Nous allons configurer API Platform grace au fichier api_platform.yaml
.
Ajout des informations nécessaires pour l’authentification
Nous ajoutons un point de terminaison à SwaggerUI pour récupérer un jeton JWT LexikJWTAuthenticationBundle pour un intégration avec API Platform, cela ajoutera un point terminaison OpenAPI pour récupérer le jeton dans l’interface utilisateur Swagger.
Modification des routes
Ajout de la route pour le login de l’utilisateur, dans config/routes.yaml
.
Tester l’authentification
Saisir bearer
suivi de la clé publique
S’authentifier avec l’identifiant (email) et le mot de passe.
Token de réponse
Détail des informations dans le token
Modification du JWT à la création
Nous pouvons modifier le contenu de notre JWT en utilisant un Subscriber associé à un événement, voir la documentation, il va écouter l’événement exik_jwt_authentication.on_jwt_created
.
Créer le EventSubscriber
Nous pouvons directement créer le Subscriber avec la commande ci-dessous, il nous faudra y renseigner l’événement.
Éditer le Subscriber
Voici un exmple de Subscriber pour éditer les informations à renseigner dans le JWT, nous avons plusieurs méthodes disponibles.
- getUser() ➡️ Nous permet de récupérer les informations de l’utilisateur.
- getData() ➡️ Nous permet de récupérer les informations dans le token JWT.
- getHeader() ➡️ Nous permet de récupérer les informations dans le header du token JWT.