Je veux comprendre ce que signifie l'authentification par jeton. J'ai cherché sur Internet mais je n'ai rien trouvé de compréhensible.
Je pense que c'est bien expliqué ici - en citant juste les phrases clés du long article:
Le concept général derrière un système d'authentification basé sur des jetons est simple. Autorisez les utilisateurs à entrer leur nom d'utilisateur et leur mot de passe afin d'obtenir un jeton leur permettant de récupérer une ressource spécifique - sans utiliser leur nom d'utilisateur ni leur mot de passe. Une fois que leur jeton a été obtenu, l'utilisateur peut proposer le jeton - qui offre l'accès à une ressource spécifique pendant une période donnée - au site distant.
En d'autres termes: ajoutez un niveau d'indirection pour l'authentification - au lieu de devoir s'authentifier avec un nom d'utilisateur et un mot de passe pour chaque ressource protégée, l'utilisateur s'authentifie une fois (dans une session de durée limitée) et obtient en retour un jeton limité dans le temps. , et utilise ce jeton pour une authentification supplémentaire au cours de la session.
Les avantages sont nombreux - par exemple, l'utilisateur peut transmettre le jeton, une fois qu'il l'a obtenu, à un autre système automatisé auquel il est prêt à faire confiance pour un temps limité et un ensemble de ressources limité, mais qui le ferait pas être disposé à faire confiance avec son nom d'utilisateur et son mot de passe (c'est-à-dire avec toutes les ressources auxquelles il est autorisé à accéder, à jamais ou au moins jusqu'à ce qu'il change son mot de passe).
Si quelque chose n’est pas encore clair, veuillez modifier votre question pour clarifier CE QUI n’est pas clair à 100% pour vous, et je suis sûr que nous pourrons vous aider davantage.
De Auth0.com
L'authentification basée sur les jetons repose sur un jeton signé qui est envoyé au serveur à chaque demande.
Quels sont les avantages d'utiliser une approche basée sur les jetons?
inter-domaines/CORS: Les cookies et les CORS ne fonctionnent pas bien dans différents domaines. Une approche basée sur les jetons vous permet d’appeler AJAX vers n’importe quel serveur, dans n’importe quel domaine, car vous utilisez un en-tête HTTP pour transmettre les informations de l’utilisateur.
Sans état (ou évolutivité côté serveur): il n'est pas nécessaire de conserver un magasin de session, le jeton est une entité autonome qui transmet toutes les informations de l'utilisateur. . Le reste de l'état vit dans des cookies ou un stockage local côté client.
CDN: vous pouvez servir tous les actifs de votre application à partir d'un CDN (par exemple, javascript, HTML, images, etc.), et votre côté serveur est simplement l'API.
Découplage: vous n'êtes lié à aucun schéma d'authentification particulier. Le jeton peut être généré n'importe où. Par conséquent, votre API peut être appelée de n'importe où avec un moyen unique d'authentifier ces appels.
Mobile ready: lorsque vous commencez à travailler sur une plate-forme native (iOS, Android, Windows 8, etc.), les cookies ne sont pas idéaux pour la consommation de jetons. Cette approche simplifie beaucoup cela.
CSRF: étant donné que vous ne vous fiez pas aux cookies, vous n'avez pas besoin de vous protéger contre les requêtes entre sites (par exemple, il ne serait pas possible de créer votre site , générez une demande POST et réutilisez le cookie d’authentification existant car il n’y en aura pas).
Performances: Nous ne présentons ici aucun critère de performance, mais un aller-retour en réseau (par exemple, trouver une session sur une base de données) risque de prendre plus de temps que de calculer. un HMACSHA256 pour valider un jeton et en analyser le contenu.
Un token
est une donnée que seul Server X
aurait pu éventuellement créer et qui contient suffisamment de données pour identifier un utilisateur particulier.
Vous pouvez présenter vos informations de connexion et demander à Server X
un token
; et ensuite vous pourriez présenter votre token
et demander à Server X
d'effectuer une action spécifique à l'utilisateur.
Token
s sont créés en utilisant diverses combinaisons de diverses techniques du domaine de la cryptographie ainsi que des données provenant du domaine plus vaste de la recherche en matière de sécurité. Si vous décidez de créer votre propre système token
, vous ferez bien d’être vraiment intelligent.
Un jeton est un élément de données créé par le serveur. Il contient des informations permettant d'identifier un utilisateur particulier et la validité d'un jeton. Le jeton contiendra les informations de l'utilisateur, ainsi qu'un code de jeton spécial que cet utilisateur peut transmettre au serveur avec chaque méthode prenant en charge l'authentification, au lieu de passer directement un nom d'utilisateur et un mot de passe.
L'authentification par jeton est une technique de sécurité qui authentifie les utilisateurs qui tentent de se connecter à un serveur, un réseau ou un autre système sécurisé, à l'aide d'un jeton de sécurité fourni par le serveur.
Une authentification est réussie si un utilisateur peut prouver à un serveur qu’il est un utilisateur valide en transmettant un jeton de sécurité. Le service valide le jeton de sécurité et traite la demande de l'utilisateur.
Une fois le jeton validé par le service, il est utilisé pour établir un contexte de sécurité pour le client, afin que le service puisse prendre des décisions d'autorisation ou mener une activité d'audit pour les demandes utilisateur successives.
basé sur les jetons (sécurité/authentification)
cela signifie que pour pouvoir prouver que nous avons accès, nous devons d’abord recevoir le jeton. Dans un scénario réel, le jeton pourrait être une carte d'accès à un bâtiment, il pourrait être la clé de la serrure de votre maison. Pour que vous puissiez récupérer une carte-clé de votre bureau ou la clé de votre domicile, vous devez d'abord prouver qui vous êtes et si vous avez effectivement accès à ce jeton. Cela peut être quelque chose d'aussi simple que de montrer votre identité à quelqu'un ou de lui donner un mot de passe secret. Alors, imaginez que je dois avoir accès à mon bureau. Je descends au bureau de la sécurité, je leur montre ma carte d'identité et ils me donnent ce jeton qui me permet d'entrer dans le bâtiment. Maintenant, j'ai un accès illimité à faire tout ce que je veux à l'intérieur du bâtiment, tant que mon jeton est avec moi.
Quel est l’avantage de la sécurité basée sur les jetons?
Si nous repensons à l’API non sécurisée, ce que nous devions faire, c’était que nous devions fournir notre mot de passe pour tout ce que nous voulions faire.
Imagine chaque fois que nous entrons dans une porte de notre bureau, nous devons donner notre mot de passe à toutes les personnes assises à côté de la porte. Ce serait vraiment dommage, car cela signifie que toute personne à l’intérieur de notre bureau pourrait prendre notre mot de passe et nous faire passer pour nous, ce qui est bien mauvais. Au lieu de cela, nous récupérons le jeton, bien sûr avec le mot de passe, mais nous le récupérons d’une personne. Et nous pouvons ensuite utiliser ce jeton partout où nous voulons dans le bâtiment. Bien sûr, si nous perdons le jeton, nous avons le même problème que si quelqu'un d'autre connaissait notre mot de passe, mais cela nous amène à des choses comme: comment s'assurer que si nous perdons le jeton, nous pouvons révoquer l'accès, et peut-être le jeton ne devrait pas vivre plus de 24 heures; le lendemain, nous devons donc présenter à nouveau notre pièce d'identité au bureau. Néanmoins, il n’ya qu’une personne à qui nous montrons la carte d’identité, c’est l’agent de sécurité assis où nous récupérons les jetons.
La question est ancienne et la technologie a évolué, voici l'état actuel:
JSON Web Token (JWT) est une norme ouverte basée sur JSON (RFC 7519) permettant de transmettre des revendications entre les parties dans un environnement d'application Web. Les jetons sont conçus pour être compacts, sécurisés pour les URL et utilisables notamment dans un contexte de connexion unique (SSO) sur un navigateur Web.
C'est juste le hachage associé à l'utilisateur dans la base de données ou d'une autre manière. Ce jeton peut être utilisé pour authentifier, puis autoriser un utilisateur à accéder au contenu de l'application. Pour récupérer ce jeton lors de la connexion côté client, vous devez le faire. Après la première connexion, vous devez enregistrer le jeton récupéré, pas d'autres données telles que session, identifiant de session car ici tout est un jeton pour accéder à d'autres ressources de l'application.
Le jeton est utilisé pour assurer l'authenticité de l'utilisateur.
L’approche la plus recommandée de nos jours pour sécuriser les ressources de l’API Web consiste à authentifier les utilisateurs du serveur API Web à l’aide du jeton signé (qui contient suffisamment d’informations pour identifier un utilisateur particulier) qui doit être envoyé au serveur par le client à chaque fois. chaque demande. C'est ce qu'on appelle l'approche d'authentification basée sur les jetons.
L’authentification basée sur les jetons fonctionne comme suit:
Un utilisateur entre le nom et le mot de passe dans le client (client, le navigateur ou les appareils mobiles, etc.).
Le client envoie ensuite ces informations d'identification (nom d'utilisateur et mot de passe) au serveur d'autorisations.
Ensuite, le serveur d'authentification authentifie les informations d'identification du client (nom d'utilisateur et mot de passe), puis génère et renvoie un jeton d'accès. Ce jeton d’accès contient suffisamment d’informations pour identifier un utilisateur, ainsi que le délai d’expiration du jeton.
L'application client inclut ensuite le jeton d'accès dans l'en-tête d'autorisation de la demande HTTP pour accéder aux ressources restreintes à partir du serveur de ressources jusqu'à l'expiration du jeton.
L'article suivant explique comment implémenter étape par étape l'authentification par jeton dans l'API WEB.
https://dotnettutorials.net/lesson/token-based-authentication-web-api/
Lorsque vous vous enregistrez sur un nouveau site Web, vous recevez souvent un courrier électronique pour activer votre compte. Cet email contient généralement un lien sur lequel cliquer. Une partie de ce lien contient un jeton. Le serveur est informé de ce jeton et peut l'associer à votre compte. Une date d'expiration est généralement associée au jeton. Vous n'avez donc qu'une heure pour cliquer sur le lien et activer votre compte. Rien de tout cela ne serait possible avec les cookies ou les variables de session, car on ne sait pas quel appareil ou navigateur le client utilise pour vérifier ses emails.