Bonjour,
J'ai une appli avec des services REST et une authentification qui permet la création d'un token JWT qui est ensuite envoyé par le client à chaque requête. Ce token expire au bout de 20 minutes. Je gère la récupération du token, la vérification du token et la restriction par rôle grâce à Spring security.
J'ai cependant quelques questions:
- J'ai vu des exemples où le ou les roles de l'utilisateur étaient mis dans le token puis récupérés du token côté serveur. Le token contient donc les infos de l'utilisateur y compris son rôle ce qui permet d'être stateless. Le token étant signé, il ne peut pas être modifié pour par exemple se mettre dans un autre rôle (ex: un role d'admin) mais n'est-ce pas risqué d'avoir le rôle en clair dans le token? Je préfère avoir juste l'identifiant et aller chercher à chaque fois en base le rôle même si du coup je ne suis plus stateless.
- Actuellement j'ai seulement un token mais j'ai vu qu'on pouvait utiliser Oauth2 et gérer 2 tokens: le token principal qui a une durée d'expiration pus courte (ex: 2 minutes) et un token pour le refresh qui a une durée d'expiration plus longue (ex: 30 minutes). Cependant, je ne vois pas ce que cela apporte car une personne malintentionnée récupérant les 2 tokens pourra toujours se connecter jusqu'à l'expiration du token de refresh. Pouvez-vous m'expliquer en quoi cela serait plus sûr avec Oauth2?
Merci d'avance pour votre retour.
Partager