Erste Anmeldung für einen Benutzer mit API KEY

Hallo zusammen,

ich verwende Discourse nur als Backend, ohne Beteiligung der Discourse-Benutzeroberfläche. Um die API zu nutzen, verwende ich einen Benutzernamen und einen globalen API-Schlüssel, um Anfragen zu stellen.
Ich stoße auf ein Problem: Immer wenn ein neuer Benutzer in meinem OIDC-Anbieter (Keycloak) erstellt wird, kann ich seinen Benutzernamen nicht in meiner API verwenden. Discourse erkennt den Benutzer nicht.
Ich habe versucht, dies zu debuggen und festgestellt, dass Discourse ebenfalls einen Benutzer erstellt, wenn sich ein Benutzer zum ersten Mal erfolgreich über OIDC anmeldet, und ein Banner auf der Benutzeroberfläche anzeigt, dass das Konto erfolgreich erstellt wurde. Erst danach kann ich den Benutzernamen verwenden, um meine Anfrage zu stellen.
Ich möchte diesen Ablauf automatisieren, ohne die Benutzeroberfläche verwenden zu müssen. Grundsätzlich meine ich, wenn ein Benutzer auf meiner OIDC-Plattform erstellt wird, sollte ich in der Lage sein, seinen Benutzernamen und seinen globalen API-Schlüssel zu verwenden, um meine Anfrage zu stellen, ohne die Benutzeroberfläche zu verwenden. Ich bin offen für das Aufrufen zusätzlicher APIs.

Jeder Hinweis ist hilfreich.
Vielen Dank im Voraus!!

Wie du vermutest, musst du den Benutzer mit der API erstellen. Sync DiscourseConnect user data with the sync_sso route könnte helfen. Wenn nicht, siehe Search results for 'create user api' - Discourse Meta, oder vielleicht das gute alte Reverse-Engineering der Discourse-API

3 „Gefällt mir“

DiscourseConnect funktioniert in meinem Fall nicht, da zu einem Zeitpunkt entweder OIDC oder Discourse Connect verwendet werden kann. Ich habe versucht, die Discourse-API zu reverse-engineeren.
Die URL lautet: - https://smallidea.co/u

Sie hat folgende Payload: -
{
name: testuser
email: test@xxxxxx.com
username:discoursetestuser3
password_confirmation:2290e67e2f59d6b9a0edbc735cef0e1d
challenge:598d41761746371257a4c89d5ac61260
timezone:Asia/Calcutta
}

Ich kann die Parameter „password_confirmation“ und „challenge“ nicht verstehen. Gibt es eine Idee, was das ist?
Beide Parameter sind dynamisch und es gibt keinen festen Wert, den ich übergeben kann. Das ist zufällig.