Bestätigung einer korrekten Benutzer+Pass-Kombination über API?

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…

  1. 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.

  2. 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 :grimacing:

Ich habe die gesamte API-Dokumentation durchsucht, aber ich kann partout keinen einfachen „login“-Endpunkt finden :thinking:

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 :blush:

Es gibt keine API-Route, die das rohe Passwort eines Benutzers zurückgibt, daher glaube ich nicht, dass dieser Ansatz funktionieren wird. Aus Ihrer Beschreibung geht hervor, dass Sie Discourse als SSO-Anbieter für Ihre Website verwenden möchten. Das könnte funktionieren. Details zur Einrichtung finden Sie hier: Use Discourse as an identity provider (SSO, DiscourseConnect).

4 „Gefällt mir“

Danke @simon – ein kurzer Blick auf den Link deutet darauf hin, dass er genau das sein könnte, was ich brauche.

Ich lege mich ins Zeug :nerd_face:

1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.