Hallo zusammen,
ich bitte um eine kleine Hilfestellung beim Einloggen von Nutzern auf einer externen Website unter Verwendung ihrer bestehenden Discourse-Benutzerdaten und -Passwörter.
Ich glaube nicht, dass ich SSO brauche – hier ist der Grund.
Zunächst etwas Hintergrund zu meinem aktuellen Anwendungsfall und warum mir das nicht gefällt.
Ich habe derzeit eine Website unter https://www.example.com, die über einen Login-Button verfügt.
Wenn ein Nutzer auf den Login-Button klickt, wird er aufgefordert, seinen bestehenden Discourse-Benutzernamen und seine E-Mail-Adresse einzugeben (Hinweis: Benutzername + E-Mail, NICHT ein Passwort).
Anschließend sende ich diese beiden Informationen über eine API-GET-Anfrage an:
"https://mydiscourse.comm/admin/users/list/all.json?email=" + strEmail
In den Headern dieses API-Aufrufs gebe ich den Benutzernamen des „system“-Kontos sowie den zugehörigen API-Schlüssel für dieses Systemkonto an.
Falls eine Übereinstimmung der E-Mail-Adresse gefunden wird, vergleiche ich den von mir im Formular eingegebenen Benutzernamen mit dem Benutzernamen, der in der API-Antwort für diese E-Mail-Adresse zurückgegeben wird.
Stimmen sie überein, betrachte ich den Nutzer als auf meiner Website unter https://www.example.com eingeloggt.
Ich habe dies vor drei oder vier Jahren entwickelt, und es funktioniert bis heute einwandfrei.
Aber…
-
Es ist sehr verwirrend für Nutzer, eine Kombination aus Benutzername und E-Mail-Adresse in einem Login-Formular einzugeben.
– Die meisten Leute geben immer Benutzername + Passwort ein.
– Trotz massiver Hinweise überall auf meinem Formular machen Nutzer es immer noch auf natürliche Weise falsch. -
Es ist nicht sicher.
– Man braucht nur den Benutzernamen und die E-Mail-Adresse des Nutzers. Mit diesen beiden (trivialen) Informationen kann man sich ohne große Mühe „als diese Person“ bei https://www.example.com einloggen.
Was ich gerne tun möchte: Der Nutzer klickt auf dem Login-Button von https://www.example.com und gibt seine bestehenden Discourse-Daten ein – Benutzername + Passwort (statt Benutzername + E-Mail!).
Meine Website unter example.com würde dann eine kurze API-Anfrage an mein Discourse senden, die Richtigkeit der angegebenen Benutzername/Passwort-Kombination prüfen und die entsprechende Discourse-Benutzer-ID zurückgeben.
Ich hoffe, das ergibt Sinn ![]()
Ich habe die gesamte API-Dokumentation durchsucht, aber ich kann partout keinen einfachen „login“-Endpunkt finden ![]()
Ich muss oder möchte die Nutzer weder in noch aus meinem Discourse selbst ein- oder ausloggen. Ich muss lediglich bestätigen, dass ihr Benutzername und Passwort korrekt sind.
Jeder Hinweis, jede Anleitung, jeder Link oder jeder Rat ist sehr willkommen ![]()