Oauth leitet nach erfolgreicher JSON-Anfrage des Benutzers zu /login weiter

Meine Konfiguration für OAuth Basic verhält sich ziemlich seltsam. Zu Beginn gab es einige Fehler beim Einrichten, die ich jedoch behoben habe. Jetzt kann ich jedoch den Ablauf von Discourse → Cognito Authorize Endpoint → Discourse Callback → Discourse /login verfolgen. In den Logs erscheinen keine Warnungen oder Fehler, und beim Überprüfen der Logs sehe ich, dass ein erfolgreicher JSON-Aufruf durchgeführt wurde, um die Benutzerdaten abzurufen.

Da es anscheinend ein erfolgreiches Token gibt und die JSON-Daten geladen wurden, würde ich erwarten, dass das Benutzerkonto erfolgreich registriert wird. Stattdessen wird der Benutzer jedoch zur Anmeldeseite weitergeleitet.

Bitte sehen Sie sich die unten stehenden Logs an.

OAuth2 Debugging: after_authenticate response: creds: {"token"=>"eyJraWQiOiJ3YW8zbVBRWmh2Z2F6YldNaU5jS3ZOdVdRMXRmcm1ya2ZVZ2RvVjVYSG1RPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJkNzhkZDliNS03Mjc2LTQ5OWEtYjdiN
7:48 pm
OAuth2 Debugging: user_json_url: GET https://api.lifebac.com/token/details?token=eyJraWQiOiJ3YW8zbVBRWmh2Z2F6YldNaU5jS3ZOdVdRMXRmcm1ya2ZVZ2RvVjVYSG1RPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJkNzhkZDliNS03Mjc
7:48 pm
OAuth2 Debugging: user_json_response: #<Excon::Response:0x00007f36a7608a30 @data={:body=>"{\"id\":\"d78dd9b5-7276-499a-b7b6-02da38e03ce9\", ...}", :cookies=>[], :host=>"api.lifebac.com", :headers=>{"Conten
7:48 pm
OAuth2 Debugging: user_json: {"id"=>"d78dd9b5-7276-499a-b7b6-02da38e03ce9", ...}

Jede Hilfe dazu, was hier passiert, wäre unglaublich hilfreich. Ich bin gerne bereit, bei Bedarf die Backtraces bereitzustellen.

Die Weiterleitung ist normal, aber es sollte auch ein Registrierungs-Popup erscheinen. Sehen Sie das?

Das Benutzerkonto wird erst erstellt, nachdem der Benutzer die Kontodaten bestätigt und auf „Erstellen

Hallo David,

leider liefert diese Information ohne Eingabe aller Daten keine Bestätigung.

Außerdem: Ist es möglich, den Benutzer automatisch zu bestätigen? Die E-Mail-Adresse ist auf unserer Seite bereits verifiziert, und ich möchte das Erlebnis für unsere Nutzer so nahtlos wie möglich gestalten.

Das Überspringen des Popups ist (noch) nicht möglich, aber alle Felder sollten automatisch mit Daten aus Ihrem Identity Provider befüllt werden.

Wie lauten die Werte für Ihre OAuth2-Einstellungen? Nehmen wir zum Beispiel oauth2_json_email_path.

Könnten Sie zudem die vollständige Zeile mit „user_json

Die vollständigen Daten waren

{"id"=>"d78dd9b5-7276-499a-b7b6-02da38e03ce9", "username"=>"patrick2"}

und die Feldwerte für die relevanten Felder waren „id

Die Mindestdaten, um das Konto mit einem Discourse-Konto zu verbinden, sind lediglich die id. Discourse benötigt jedoch einen Benutzernamen und eine E-Mail-Adresse. Deshalb zeigen wir das Registrierungs-Modal an.

Wenn du diese Informationen zur OAuth-API hinzufügen kannst, würde das den Ablauf für deine Nutzer deutlich verbessern :+1:

Ja, ich arbeite gerade daran! Ich werde den Endpunkt so anpassen, dass auch die E-Mail-Adresse enthalten ist, und prüfen, ob dies das Problem löst.

In diesem Fall sollte der Benutzername doch zumindest auf der Anmeldeseite erscheinen?

Vielen Dank

Patrick

Ja, das sollte er. Haben Sie oauth2_json_username_path auf username gesetzt?

@david, danke, Kumpel! Das hat mit den Daten alles funktioniert.

Wie ist der richtige Weg, ein Flag zu setzen, um OAuth-Benutzer automatisch zu bestätigen?

Vielen Dank

Patrick

Was meinst du mit „automatisch bestätigen

Perfekt! Ich meinte die zweite! Aber wenn sie bereits auf deinem Radar ist, dann ist alles in Ordnung!

Wird die neue Einstellung external_auth_skip_create_confirm aus Automatically provision accounts with external SSO provider? (skip Create New Account prompt) - #6 by david bei OAuth2 unterstützt?

Das stimmt! Es wird von jedem einzelnen Discourse-Auth-Anbieter unterstützt (sogar Facebook, GitHub, Google usw.) :smiley: