Rest - Questions autour de l'authentification JWT et Oauth2
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.