web-dev-qa-db-fra.com

Comment fonctionne l'authentification basée sur les cookies?

Quelqu'un peut-il me décrire étape par étape le fonctionnement de l'authentification par cookie? Je n'ai jamais rien fait, ni d'authentification ni de cookies. Qu'est-ce que le navigateur doit faire? Que doit faire le serveur? Dans quel ordre? Comment pouvons-nous garder les choses en sécurité?

J'ai lu sur différents types d'authentification et sur les cookies, mais j'aimerais une description de base sur la façon d'utiliser les deux ensemble. J'ai seulement lu qu'ils étaient souvent utilisés ensemble, mais ne trouvaient pas de description de la manière.

172
Mastid

Un cookie est fondamentalement juste un élément dans un dictionnaire. Chaque élément a une clé et une valeur. Pour l'authentification, la clé pourrait être quelque chose comme "nom d'utilisateur" et la valeur serait le nom d'utilisateur. Chaque fois que vous faites une demande sur un site Web, votre navigateur inclut les cookies dans la demande et le serveur hôte vérifie les cookies. Donc, l'authentification peut se faire automatiquement comme ça.

Pour définir un cookie, il vous suffit de l'ajouter à la réponse que le serveur renvoie après les requêtes. Le navigateur ajoutera ensuite le cookie à la réception de la réponse.

Il existe différentes options que vous pouvez configurer pour le serveur de cookies, telles que les délais d'expiration ou le cryptage. Un cookie crypté est souvent appelé cookie signé. Fondamentalement, le serveur chiffre la clé et la valeur dans l'élément de dictionnaire, de sorte que seul le serveur peut utiliser les informations. Alors, le cookie serait sécurisé.

Un navigateur enregistre les cookies définis par le serveur. Dans l'en-tête HTTP de chaque requête du navigateur adressée à ce serveur, les cookies seront ajoutés. Il ajoutera uniquement des cookies pour les domaines qui les ont configurés. Example.com peut définir un cookie et également ajouter des options dans l'en-tête HTTP afin que les navigateurs l'envoient à des sous-domaines, comme sub.example.com. Il serait inacceptable qu'un navigateur envoie des cookies à un autre domaine.

138
Conor Patrick

Je me rends compte que cela fait des années en retard, mais je pensais pouvoir développer la réponse de Conor et ajouter un peu plus à la discussion.

Quelqu'un peut-il me décrire étape par étape le fonctionnement de l'authentification par cookie? Je n'ai jamais rien fait, ni d'authentification ni de cookies. Qu'est-ce que le navigateur doit faire? Qu'est-ce que le serveur doit faire? Dans quel ordre? Comment pouvons-nous garder les choses en sécurité?

Étape 1: Client> Inscription

Avant toute chose, l'utilisateur doit s'inscrire. Le client envoie une requête HTTP au serveur contenant son nom d'utilisateur et son mot de passe.

Étape 2: Serveur> Gestion de l'inscription

Le serveur reçoit cette demande et hache le mot de passe avant de stocker le nom d'utilisateur et le mot de passe dans votre base de données. De cette manière, si quelqu'un accède à votre base de données, il ne verra pas les mots de passe réels de vos utilisateurs.

Étape 3: Client> Connexion de l'utilisateur

Votre utilisateur se connecte à présent. Il/elle fournit son nom d'utilisateur/mot de passe et, à nouveau, il est envoyé sous forme de requête HTTP au serveur.

Étape 4: Serveur> Validation de la connexion

Le serveur recherche le nom d'utilisateur dans la base de données, hache le mot de passe de connexion fourni et le compare au mot de passe précédemment haché de la base de données. Si cela ne fonctionne pas, nous pouvons leur refuser l'accès par en envoyant un code d'état 401 et en mettant fin à la demande .

Étape 5: Serveur> Générer un jeton d'accès

Si tout se vérifie, nous allons créer un jeton d'accès, qui identifie de manière unique la session de l'utilisateur. Toujours dans le serveur, nous faisons deux choses avec le jeton d'accès:

  1. Stockez-le dans la base de données associée à cet utilisateur
  2. Joignez-le à un cookie de réponse à renvoyer au client. Assurez-vous de définir une date/heure d'expiration pour limiter la session de l'utilisateur

Désormais, les cookies seront attachés à chaque requête (et réponse) faite entre le client et le serveur.

Étape 6: Client> Demandes de page

De retour côté client, nous sommes maintenant connectés. Chaque fois que le client demande une page nécessitant une autorisation (c’est-à-dire qu’il doit être connecté), le serveur obtient le jeton d’accès du cookie et le compare à celui indiqué. dans la base de données associée à cet utilisateur. Si cela fonctionne, l'accès est accordé.

Cela devrait vous aider à démarrer. Assurez-vous d'effacer les cookies lors de la déconnexion!

235
pllx

authentification par cookie

L’authentification basée sur les cookies fonctionne normalement dans ces 4 étapes-

  1. L'utilisateur fournit un nom d'utilisateur et un mot de passe dans le formulaire de connexion et clique sur Connexion.
  2. Une fois la demande effectuée, le serveur valide l'utilisateur sur le serveur en interrogeant la base de données. Si la demande est valide, il créera une session en utilisant les informations utilisateur extraites de la base de données et les stockera. Pour chaque session, un identifiant unique appelé ID de session est créé. Par défaut, l'identifiant de session est attribué au client via le navigateur.
  3. Le navigateur soumettra cet identifiant de session à chaque requête ultérieure. L'identifiant de session sera vérifié par rapport à la base de données. Sur la base de cet identifiant de session, le site Web identifiera la session appartenant à quel client, puis donnera accès à la demande.

  4. Une fois qu'un utilisateur se déconnecte de l'application, la session est détruite à la fois côté client et côté serveur.

14
Debendra Dash