Bonjour,
je suis en train de développer une API avec un ensemble de méthodes en PHP.
J'étais en train de faire comme d'habitude (appli web classique via browser) :
- Authentification
- Stockage en session de l'id utilisateur
- Affichage des données métiers
quand on m'a signifié que mes méthodes ne fonctionnaient pas. Après investigation, effectivement, les sessions ne sont pas enregistrées et malgré une authentification OK de l'utilisateur, son appel suivant tombe en KO (l'API ne trouve pas son ID).
Après recherches, il semble qu'une API doivent être Stateless, sans session / contexte donc. Sauf que moi j'ai besoin d'identifier quel utilisateur s'est connecté pour lui renvoyer ses données.
La lecture d'articles me pousse vers JWT qui permet de faire transmettre, entre autre, un information permettant d'identifier l'utilisateur connecté (le JWT est propagé pendant toute l'utilisation de l'API). Ce qui signifie qu'à chaque requête, je dois :
- décryper le JWT pour retrouver l'ID utilisateur
- "recalculer" ses droits en fonction de son profil (mon API gère plusieurs profils)
avant de faire un requête qui récupère ses données.
Est-ce la bonne démarche ?
Fondamentalement, trimbaler l'ID dans chaque appel via JWT ne me pose pas de souci, mais le recalcul des droits à chaque appel pourrait être lourd.
Merci de vos conseils !
Partager