Je viens de lire cet article qui a quelques années mais décrit une manière intelligente de sécuriser vos REST APIs. Essentiellement:
Je suis ensuite tombé sur JWT , ce qui semble très similaire. Cependant, le premier article ne mentionne pas du tout JWT, et donc je me demande si JWT est différent de la solution d'authentification ci-dessus, et si oui, comment.
Commençons par une réponse très basique.
JWT (tel qu'utilisé dans le contexte de OAuth et OpenID) ne nécessite pas de secrets partagés entre le client et l'API. Il y a 3 composants et des paires de 2 partagent un secret chacun: client <-> serveur d'identification , serveur d'identification <-> API.
Cela déplace la plupart de la complexité de l'API vers le serveur d'identification, l'API n'a qu'à vérifier que le jeton a été émis par le serveur d'identification et n'a pas été tempéré. Pour vérifier que l'API vérifie que la signature JWT est valide avec le seul secret partagé connu entre le serveur d'identification et l'API. C'est ça!
La façon dont le serveur d'identification valide l'identité de l'utilisateur peut varier considérablement (dans de nombreux cas, il s'agit de l'ancienne paire nom d'utilisateur + mot de passe via une connexion TLS), mais n'a aucun effet sur votre API.
La confidentialité et la sécurité du message et du jeton lui-même lors de l'utilisation de JWT sont gérées par TLS, JWT ignore ces problèmes.