Kann mir jemand Schritt für Schritt beschreiben, wie die Cookie-basierte Authentifizierung funktioniert? Ich habe noch nie etwas mit Authentifizierung oder Cookies gemacht. Was muss der Browser tun? Was muss der Server tun? In welcher Reihenfolge? Wie halten wir die Dinge sicher?
Ich habe über verschiedene Arten der Authentifizierung und über Cookies gelesen, möchte aber eine grundlegende Beschreibung der Verwendung der beiden zusammen. Ich habe nur gelesen, dass sie häufig zusammen verwendet werden, konnte jedoch keine Beschreibung der Verwendung finden.
authentication
cookies
browser
Mastid
quelle
quelle
Antworten:
Ein Cookie ist im Grunde nur ein Element in einem Wörterbuch. Jeder Artikel hat einen Schlüssel und einen Wert. Für die Authentifizierung könnte der Schlüssel so etwas wie "Benutzername" sein und der Wert wäre der Benutzername. Jedes Mal, wenn Sie eine Anfrage an eine Website stellen, nimmt Ihr Browser die Cookies in die Anfrage auf, und der Host-Server überprüft die Cookies. Die Authentifizierung kann also automatisch so erfolgen.
Um ein Cookie zu setzen, müssen Sie es nur zu der Antwort hinzufügen, die der Server nach Anforderungen zurücksendet. Der Browser fügt das Cookie nach Erhalt der Antwort hinzu.
Es gibt verschiedene Optionen, die Sie für den Cookie-Server konfigurieren können, z. B. Ablaufzeiten oder Verschlüsselung. Ein verschlüsseltes Cookie wird häufig als signiertes Cookie bezeichnet. Grundsätzlich verschlüsselt der Server den Schlüssel und den Wert im Wörterbuchelement, sodass nur der Server die Informationen verwenden kann. Dann wäre der Cookie also sicher.
Ein Browser speichert die vom Server gesetzten Cookies. Im HTTP-Header jeder Anfrage, die der Browser an diesen Server stellt, werden die Cookies hinzugefügt. Es werden nur Cookies für die Domains hinzugefügt, die sie setzen. Example.com kann ein Cookie setzen und im HTTP-Header Optionen hinzufügen, mit denen die Browser das Cookie an Subdomains wie sub.example.com zurücksenden können. Es wäre nicht akzeptabel, wenn ein Browser jemals Cookies an eine andere Domain sendet.
quelle
Mir ist klar, dass dies Jahre zu spät ist, aber ich dachte, ich könnte Conors Antwort erweitern und der Diskussion ein bisschen mehr hinzufügen.
Schritt 1: Client> Anmelden
Vor allem muss sich der Benutzer anmelden. Der Client sendet eine HTTP-Anfrage an den Server, die seinen Benutzernamen und sein Kennwort enthält.
Schritt 2: Server> Behandlung Anmeldung
Der Server empfängt diese Anforderung und hasht das Kennwort, bevor er den Benutzernamen und das Kennwort in Ihrer Datenbank speichert. Auf diese Weise werden Personen, die Zugriff auf Ihre Datenbank erhalten, die tatsächlichen Kennwörter Ihrer Benutzer nicht angezeigt.
Schritt 3: Client> Benutzeranmeldung
Jetzt meldet sich Ihr Benutzer an. Er gibt seinen Benutzernamen / sein Passwort an und dies wird erneut als HTTP-Anfrage an den Server gesendet.
Schritt 4: Server> Anmeldung überprüfen
Der Server sucht den Benutzernamen in der Datenbank, hasht das angegebene Anmeldekennwort und vergleicht es mit dem zuvor gehashten Kennwort in der Datenbank. Wenn es nicht ausgecheckt wird, können wir ihnen den Zugriff verweigern, indem wir einen 401-Statuscode senden und die Anforderung beenden .
Schritt 5: Server> Zugriffstoken generieren
Wenn alles ausgecheckt ist, erstellen wir ein Zugriffstoken, das die Sitzung des Benutzers eindeutig identifiziert. Noch auf dem Server machen wir zwei Dinge mit dem Zugriffstoken:
Von nun an werden die Cookies an jede Anfrage (und Antwort) zwischen Client und Server angehängt.
Schritt 6: Client> Seitenanforderungen stellen
Zurück auf der Clientseite sind wir jetzt angemeldet. Jedes Mal, wenn der Client eine Seite anfordert, für die eine Autorisierung erforderlich ist (dh sie müssen angemeldet sein), erhält der Server das Zugriffstoken aus dem Cookie und vergleicht es mit dem einen in der diesem Benutzer zugeordneten Datenbank. Wenn es auscheckt, wird der Zugriff gewährt.
Damit sollten Sie loslegen. Löschen Sie die Cookies unbedingt beim Abmelden!
quelle
Cookie-basierte Authentifizierung
Die auf Cookies basierende Authentifizierung funktioniert normalerweise in diesen 4 Schritten:
Der Browser sendet diese Sitzungs-ID bei jeder nachfolgenden Anforderung. Die Sitzungs-ID wird anhand der Datenbank überprüft. Basierend auf dieser Sitzungs-ID identifiziert die Website die Sitzung, die zu welchem Client gehört, und gibt dann Zugriff auf die Anforderung.
Sobald sich ein Benutzer von der App abmeldet, wird die Sitzung sowohl clientseitig als auch serverseitig zerstört.
quelle