Ich denke, alle oben genannten Antworten sind falsch. @Andy hat wahrscheinlich Ihre Frage beantwortet, wenn auch viel zu vage. Das Problem besteht darin, dass (a) Sie davon ausgehen, dass Ihre Benutzer ein Bedrohungsvektor sind (Cookies ausnutzen, um nicht autorisierten Zugriff zu erhalten) (b) Sie Cookies als Teil Ihres Authentifizierungsmechanismus verwenden möchten. Was Sie tatsächlich implementieren möchten, ist eine Art von Null-Vertrauenssicherheit, ein Modell, das besagt, dass keinem Benutzer auf jeden Fall in irgendeiner Hinsicht vertraut werden sollte (dies ist zunächst ziemlich schwer zu verstehen).
Im Wesentlichen bedeutet dies, dass Sie Cookies verwenden können, dies sollten jedoch nur Sitzungscookies sein. Shibbeloth und andere ähnliche Designs für akademische Einrichtungen in Großbritannien verwenden eine Kombination aus Sitzungscookies, Authentifizierung durch Dritte (an der Einrichtung) und datenbankgestützter Sitzungsauthentifizierung (im Vergleich zu den beiden anderen). Tatsächlich überprüft es die Institution normalerweise auch auf Benutzerrechte (dh wenn Sie Informatik studieren, benötigen Sie keine medizinische Bibliothek usw.).
Die Verwendung eines dauerhaften Cookies ist also Ihr Problem ein definitives Nein-Nein. Sie scheinen das Risiko bei der Verwendung eines dauerhaften Cookies bereits zu verstehen, dh es kann gestohlen werden (normalerweise im Klartext). Verwenden Sie daher im schlimmsten Fall nicht persistente Sitzungscookies.
Wenn Sie diese Authentifizierungsmethode verwenden, sollten Sie meiner Ansicht nach die Cookies regelmäßig widerrufen und den Benutzer erneut anmelden . Wie ich bereits erklärt habe, ist Shibbeloth vom Design her vielschichtig, da es Ihre Anmeldeinformationen mit denen Ihrer Universität vergleicht. Bessere Designs würden nicht nur Benutzerinformationen vergleichen, sondern mehr als einen Berechtigungsnachweis erfordern (d. H. Eine Textnachricht, eine E-Mail oder eine geheime Antwort wie beim Online-Banking).
Realistisch gesehen können die meisten webbasierten Anwendungen enorm davon profitieren, dass sie zustandslos sind (abhängig von der Anwendung und Ihren Benutzer- / Systemanforderungen). Sie können Sitzungscookies also fast vollständig aus dem Bild entfernen, indem Sie sie verwenden, bis das Browserfenster geschlossen ist / die Zeit abgelaufen ist, oder indem Sie einen verschlüsselten clientseitigen Benutzerspeicher verwenden (bessere Lösung).
Unter anderem Wie andere Benutzer bereits gesagt haben, z. B. Fingerabdruck-Browser und Überwachung der Nutzungsmuster, gibt es viele Strategien, die Sie anwenden können. Sie können auch IP-Whitelisting, Anti-DDoS, regelmäßigen Rollover von Anmeldeinformationen usw. verwenden. Diese sind komplementär, aber keine Lösung für sich.
Was Sie niemals tun dürfen, ist die Priorisierung von Sicherheits- und Softwarefehlern für Benutzer Verbesserung erfahren (sie sind übrigens dasselbe). Wenn Sie dies tun, könnten Sie eines Tages für eine Datenschutzkatastrophe verantwortlich sein (und möglicherweise ins Gefängnis gehen und / oder viel Geld verlieren).
Um das, was Sie suchen, vollständig umzusetzen, verwenden Sie a Webanwendung (wahrscheinlich Javascript-basiert), die nicht installiert werden muss. Diese Anwendung sollte so programmiert sein, dass sie Ihre API vollständig implementiert und das ganze schwere Heben für den Benutzer erledigt. Es sollte idealerweise eine rollenbasierte Zugriffskontrolle (RBAC) über diese API durchführen (identifizieren Sie also die verschiedenen Benutzergruppen, die Sie erwähnt haben). Offensichtlich muss der RBAC auf der Serverseite implementiert werden. Es gibt keinen Grund, warum Ihre API diese nicht direkt oder über einen anderen Kanal wie ein auf Textnachrichten basierendes Token bereitstellen oder verknüpfen kann.
Ich hoffe, dies gibt Ihnen Anlass zum Nachdenken zu Ihrem Design.