Ich habe ein JS-Plugin auf meiner Discourse-Seite. Dieses JS verwendet Pocketbase zum Speichern von Daten. Pocketbase ist ein „serverloser“ SQLite-Dienst, der es mir ermöglicht, Dateien und JSON-Blobs zu speichern. Pocketbase verfügt über ein hervorragendes JWT-basiertes Authentifizierungssystem, sodass ein Benutzer, sobald er ein Authentifizierungstoken hat, Daten sicher direkt in Pocketbase speichern kann (ohne über einen Backend-Server usw. zu leiten) direkt von JS auf der Client-Seite.
Ich versuche, einen Weg zu finden, um auf der Pocketbase-Seite automatisch einen Login zu generieren, wenn sich ein Benutzer bei Discourse anmeldet.
Mein erster Versuch war, das JS-Plugin einen Aufruf an einen Pfad auf dem Server machen zu lassen und Discourse-Authentifizierungs-Cookies einzuschließen. Dann kann Nginx diesen Pfad an einen Dienst („Login-Proxy“) weiterleiten, der die Authentifizierungs-Cookies dekodieren und den Benutzer identifizieren kann. Mit verifizierten Benutzerinformationen kann der Login-Proxy dann einen speziellen Aufruf an Pocketbase machen, ein Pocketbase-Authentifizierungs-Cookie erhalten und dieses Pocketbase-Authentifizierungs-Cookie zurücksenden, das das clientseitige JS für nachfolgende Anfragen direkt an Pocketbase verwenden kann.
Ich habe jedoch Schwierigkeiten, die Discourse-Authentifizierungs-Cookies zu dekodieren (ich stelle mir vor, dass _t das richtige Cookie ist, aber ich sehe keine einfache Möglichkeit, an die Benutzerdetails zu gelangen, und mache mir Sorgen, dass sich die Struktur sowieso ändern könnte).
Gibt es eine intelligentere Möglichkeit, sicher auf die E-Mail-Adresse eines angemeldeten Benutzers zuzugreifen? Ich glaube nicht, dass dies auf der Client-Seite geschehen sollte, und ziehe es aus offensichtlichen Sicherheitsgründen vor, dies auf der Serverseite zu tun.