Ich mache meinen ersten Ausflug in das Sicherheitsmodul von Pyramid. Ich benutze diesen Login-Code, um auth_tkt:
zu setzen %Vor%Es scheint in Ordnung zu sein, aber es gibt einige verwirrende Details:
Zunächst werden tatsächlich 2 Cookies anstelle von einem gesetzt. Die 2 Cookies sind identisch (beide mit dem Namen "auth_tkt") mit Ausnahme eines Unterschieds: einer hat einen Host-Wert von ".www.mydomain.com", während der andere Cookie einen Host-Wert von "www.mydomain.com" hat 2 Cookies werden anstelle von einem gesetzt? Was ist die Bedeutung der Unterschiede Host-Werte?
Frage 2, Web-Tools berichten, dass kein Cookie sicher ist. Was kann ich tun, um sicherzustellen, dass die Cookies sicher sind?
Frage 3: Beide Cookies haben einen Ablaufwert von "Am Ende der Sitzung". Was bedeutet das und wie kann ich den Ablaufwert selbst anpassen? Was ist die empfohlene Vorgehensweise für Ablaufzeiten von Anmelde-Cookies?
Frage 4: Ich verstehe nicht, warum das erste Argument von "remember" self.request anstelle von self.request.response ist. Sollten die Daten nicht auf dem Antwortobjekt, nicht auf dem Anfrageobjekt gespeichert werden?
Tatsächlich werden 3 Cookies generiert; eine ohne Domain
key, eine mit und eine dritte mit der Wildcard-Version Ihrer Domain (der führende Punkt). In der Regel führt Ihr Browser die beiden zusammen oder ignoriert eine davon (die eine unterscheidet sich durch den Browser, weshalb 2 gesetzt sind).
Dieser letzte Cookie wird generiert, wenn die Option wild_domain
auf AuthTktAuthenticationPolicy
gesetzt ist (standardmäßig True); Weitere Informationen finden Sie in der AuthTktAuthenticationPolicy
API . Sie benötigen dies, wenn Ihr Authentifizierungscookie zwischen verschiedenen Subdomains geteilt werden soll (think app1.domain, app2.domain); Ihr Browser wird Cookies in Sub-Domains nicht ohne Platzhalter-Cookie teilen.
Sie müssen die Option secure
in Ihrer Authentifizierungsrichtlinie für Cookies setzen, um das sichere Flag zu setzen. Siehe auch die API .
Es ist kein Ablaufdatum festgelegt, was bedeutet, dass die Cookies gelöscht werden, wenn Sie Ihren Browser schließen (Ende der Sitzung, die Ihr Browser Ihnen anzeigt). Wenn Sie möchten, dass Ihre Benutzer beim Schließen des Browsers abgemeldet werden, behalten Sie dies als Standard bei.
Nur Wenn Sie möchten, dass Sitzungen über Browser-Schließungen hinweg andauern, legen Sie ein maximales Alter für Cookies fest, siehe die Option max_age
im API . Diese Option bewirkt, dass Browser das Cookie auf der Festplatte speichern, um zwischen den Browser-Schließungen bestehen zu bleiben, und sie löschen, wenn das maximale Alter überschritten ist.
Beachten Sie, dass das Richtlinienobjekt AuthTktAuthenticationPolicy
Anmeldesitzungen auf feinere Weise verwalten kann, indem es die Gültigkeitsdauer eines Authentifizierungscookies begrenzt und eine Cookie-Aktualisierungsrichtlinie einrichtet. Mit einer solchen Aktualisierungsrichtlinie erhalten die Benutzer neue (aktualisierte) Cookies, wenn sie Ihre Anwendung weiterhin verwenden. Wenn sie jedoch nicht innerhalb eines festgelegten Zeitraums eine Verbindung mit Ihrem Server herstellen, wird ihr Cookie als ungültig betrachtet um sich erneut anzumelden.
Siehe die Optionen timeout
und reissue_time
in der API-Dokumentation für weitere Details zur Konfiguration.
Das Richtlinienobjekt benötigt mehrere Informationen aus der Anfrage, um die Cookies generieren zu können, nicht zuletzt den Hostnamen Ihres Servers.