271 votes

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

Quelqu'un peut-il me donner une description étape par étape du fonctionnement de l'authentification basée sur les cookies ? Je n'ai jamais rien fait qui implique une authentification ou des cookies. Que doit faire le navigateur ? Que doit faire le serveur ? Dans quel ordre ? Comment sécuriser les choses ?

J'ai lu des articles sur les différents types d'authentification et sur les cookies, mais j'aimerais avoir une description de base sur la façon d'utiliser les deux ensemble. J'ai seulement lu qu'ils sont souvent utilisés ensemble, mais je n'ai pas trouvé de description sur la façon de le faire.

370voto

pllx Points 3661

Pour développer La réponse de Conor et ajouter un peu plus à la discussion...

Quelqu'un peut-il me donner une description étape par étape du fonctionnement de l'authentification basée sur les cookies ? Je n'ai jamais rien fait qui implique une authentification ou des cookies. Que doit faire le navigateur ? Que doit faire le serveur ? Dans quel ordre ? Comment sécuriser les choses ?

Étape 1 : Client > S'inscrire

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 > Inscription à la manutention

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 façon, 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

Maintenant votre utilisateur se connecte. Il fournit son nom d'utilisateur et son mot de passe et, une fois encore, ces informations sont envoyées au serveur sous forme de requête HTTP.

Étape 4 : Serveur > Validation de la connexion

Le serveur recherche le nom d'utilisateur dans la base de données, chiffre le mot de passe de connexion fourni et le compare au mot de passe précédemment chiffré dans la base de données. S'il n'y a pas de correspondance, nous pouvons lui refuser l'accès en envoyer un code d'état 401 et mettre fin à la demande .

Étape 5 : Serveur > Génération du jeton d'accès

Si tout se passe bien, 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. Le stocker dans la base de données associée à cet utilisateur
  2. Attachez-le à un cookie de réponse qui sera renvoyé au client. Veillez à définir une date/heure d'expiration pour limiter la session de l'utilisateur.

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

Étape 6 : Client > Faire des demandes de pages

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

Cela devrait vous permettre de commencer. N'oubliez pas d'effacer les cookies lorsque vous vous déconnectez !

200voto

Conor Patrick Points 2529

Un cookie est en fait un élément du 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 à un site Web, votre navigateur inclut les cookies dans la demande, et le serveur hôte vérifie les cookies. L'authentification peut donc se faire automatiquement de cette manière.

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

Il existe différentes options que vous pouvez configurer pour le cookie côté serveur, comme les délais d'expiration ou le cryptage. Un cookie crypté est souvent appelé cookie signé. En fait, le serveur crypte la clé et la valeur dans l'élément du dictionnaire, de sorte que seul le serveur peut utiliser l'information. Le cookie est donc sécurisé.

Un navigateur enregistre les cookies définis par le serveur. Dans l'en-tête HTTP de chaque demande que le navigateur adresse à ce serveur, il ajoute les cookies. Il n'ajoutera des cookies que pour les domaines qui les ont créés. Example.com peut créer un cookie et ajouter des options dans l'en-tête HTTP pour que les navigateurs renvoient le cookie à des sous-domaines, comme sub.example.com. Il serait inacceptable qu'un navigateur envoie des cookies à un autre domaine.

35voto

Debendra Dash Points 1932

Authentification basée sur les cookies

L'authentification basée sur les cookies fonctionne normalement selon ces 4 étapes-

  1. L'utilisateur fournit un nom d'utilisateur et un mot de passe dans le formulaire de connexion et le client/navigateur envoie une demande de connexion.

  2. Une fois la demande effectuée, le serveur valide l'utilisateur en arrière-plan en interrogeant la base de données. Si la demande est valide, il crée une session en utilisant les informations de l'utilisateur récupérées dans la base de données et les stocke. Pour chaque session, un ID unique appelé ID de session est créé. Par défaut, l'ID de session est donné au client par le navigateur.

  3. Le navigateur soumettra cet identifiant de session lors de chaque demande ultérieure. L'ID de session est vérifié dans la base de données. Sur la base de cet ID de session, le serveur identifiera la session appartenant à tel ou tel client et accordera ensuite l'accès à la demande.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X