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.
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?
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:
- Speichern Sie es in der Datenbank, die diesem Benutzer zugeordnet ist
- Hängen Sie es an ein Antwort-Cookie an, das an den Client zurückgegeben werden soll. Stellen Sie sicher, dass Sie ein Ablaufdatum / eine Ablaufzeit festlegen, um die Sitzung des Benutzers einzuschränken
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!