Ich habe diese Webanwendung, die alle clientseitige Technologie (HTML, CSS, JavaScript / AngularJS usw.) sein wird. Diese Webanwendung wird mit der REST-API interagieren, um auf Daten zuzugreifen und diese zu ändern. Derzeit ist nicht entschieden, welche Art von Authentifizierungssystem die REST-API verwenden wird.
Nach meinem Verständnis wird jede Art von API-Authentifizierungssystem (API-Schlüssel, OAuth 1/2 usw.) bestimmte Daten enthalten, die geheim gehalten werden müssen, da sonst der Zugriff beeinträchtigt werden kann. Für API-Schlüssel müssen die Schlüssel selbst geheim sein, für OAuth 2 müssen die Client-Geheim- / Zugriffstoken / Aktualisierungstoken geheim gehalten werden. Ich bin sicher, dass einige der 4 an OAuth 1 beteiligten Schlüssel geheim gehalten werden müssen (nicht zu viel Erfahrung mit OAuth 1). Ich habe versucht zu überlegen, ob es eine Möglichkeit gibt, dieses geheime Zeug in einer reinen clientseitigen Webanwendung ohne eine Art mittlere Schicht auf der Serverseite zu speichern.
Ich habe versucht, darüber nachzudenken, und ich kann mir keinen Ort dafür vorstellen. Ich meine, ich kann es nicht in Javascript speichern, weil jeder nur die Quelle anzeigen oder die Konsole öffnen und die Daten abrufen kann. Ich bin nicht 100% sicher, wie sicher localStorage ist und ob Benutzer auf diese Daten zugreifen / sie ändern können. Selbst wenn der lokale Speicher sicher war, kann ich mir zwei Möglichkeiten nicht vorstellen, Daten in ihn zu übertragen. Eine Möglichkeit besteht darin, die Daten einfach im Javascript-Quellcode zu speichern, was die unsicherste Sache ist, die ich mir vorstellen kann. Wenn ich nun etwas wie OAuth 2 verwenden würde, in dem die restliche API selbst mir die Token geben würde, wäre das immer noch nicht so sicher (besser als die erste Option), da diese Token als einfacher Text zurückgegeben würden, den jeder sehen kann Anfragen, die der Computer stellt, könnten sehen.
Gibt es eine Möglichkeit, dass eine Anwendung, die vollständig clientseitig ausgeführt wird, geheime Daten sicher speichern kann, ohne dass eine mittlere Schicht auf der Serverseite vorhanden ist?