web-dev-qa-db-fra.com

Les autorisations d'accès et les rôles doivent-ils être inclus dans la charge utile de JWT?

Les informations sur les autorisations et les rôles du client doivent-elles être incluses dans JWT?

Avoir de telles informations dans le jeton JWT sera très utile car à chaque fois qu'un jeton valide arrive, il serait plus facile d'extraire les informations sur l'autorisation de l'utilisateur et il ne sera pas nécessaire d'appeler la base de données pour la même chose. Mais est-ce que le fait d'inclure de telles informations et de ne pas les vérifier dans la base de données sera un problème de sécurité?

Ou,

Des informations comme celles mentionnées ci-dessus ne doivent jamais faire partie de JWT, et seule la base de données doit être utilisée pour vérifier les rôles d'accès et les autorisations d'un utilisateur.

9
Anshul Sahni

Le but d'inclure des revendications dans le jeton est de sorte que vous n'ayez pas à établir cette communication entre la ressource et le fournisseur d'authentification.

La ressource peut simplement vérifier que le jeton a une signature valide et faire confiance au contenu.

En supposant que la clé privée est privée du serveur d'authentification, vous êtes bon. Certains fournisseurs changent de clé pour atténuer le risque.

Si vous y pensez, si la ressource a rappelé le serveur d'authentification pour obtenir les revendications. Ensuite, il s'assure essentiellement qu'il parle au bon serveur par des méthodes de confiance similaires.

7
Ewan

D'après mon expérience, si tous vos systèmes utilisent une base de données de rôles et d'autorisations centrale, vous pouvez ajouter tout cela dans JWT.

Cependant, cette approche peut ne pas fonctionner correctement dans les scénarios d'authentification unique lorsque le serveur d'authentification lui-même n'a aucune idée du système cible qui recevra et approuvera le jeton.

Les rôles et autorisations de l'utilisateur sont entièrement sur le récepteur du jeton JWT. C'est particulièrement vrai lorsque vous intégrez l'authentification SSO avec JWT dans certains systèmes hérités qui ont déjà leur sous-système d'autorisation en place et qu'ils n'ont donc besoin que d'une seule revendication pour être présente dans JWT - la revendication d'identité de l'utilisateur.

1
JustAMartin