Ich habe das Problem gefunden: Der Header war nicht auf „Content-Type: application/json“ gesetzt. Und ich sehe, dass es bei @qlands oben genauso war.
Das einzige verbleibende Problem für mich ist dasselbe wie bei @nodomain: Das Konto wird erfolgreich erstellt, aber der Avatar ist nicht enthalten. Beispielantwort:
Body: {
"access_token":"...",
"token_type":"bearer",
"expires_in":"3600",
"scope":"profile",
"profile" : {
"id":1234,
"email": "...",
"name": "...",
"picture": "https://somedomain.com/somevalidpicture.jpg"
}
}
Und es wird korrekt analysiert, da es im folgenden Protokoll erscheint:
OAuth2 Debugging: after_authenticate response:
creds: {"token"=>"...", "expires_at"=>1702053692, "expires"=>true}
uid: 1234
info: {"email"=>"...", "name"=>"...", "avatar"=>"https://somedomain.com/somevalidpicture.jpg"}
extra: {}
Ich habe überprüft, dass die Bildadresse korrekt ist und ihre Größe 300x300 beträgt.
Irgendwelche Ideen dazu?
Bearbeiten: Jemand hat gerade ein Konto erstellt, und es hat das Bild von Gravatar übernommen. Vielleicht wird das gültige Bild in der JSON-Datei durch ein leeres Ergebnis von Gravatar überschrieben?
Authentik als OAuth-Anbieter
Ich spiele gerade mit Authentik und wollte fragen, ob jemand andere Erfahrungen damit und mit Discourse hat?
Leider habe ich kein offizielles Support-Dokument für Discourse gefunden.
Es gibt viele Einstellungen zum Herumspielen ![]()
Portainer hat eine viel einfachere Implementierung von OAuth.
Portainer, nur zum Vergleich:
Wie geht es Ihnen? Ich möchte SSO mit Authentik auf Discourse und Ghost implementieren, aber mein Projekt steht im Moment still.
Jeder Rat wäre sehr willkommen ![]()
Ist jemandem das Problem begegnet, dass SSO sich in einem internen Netzwerk befindet und Discourse beim Versuch, auf die SSO-Website über eine interne IP-Adresse zuzugreifen, nicht erreichbar ist?
tail -f production.log
(oauth2_basic) Setup endpoint detected, running now.
(oauth2_basic) Request phase initiated.
Started POST "/presence/update" for 10.10.10.10 at 2024-06-15 18:19:44 +0000
Processing by PresenceController#update as */*
Parameters: {"client_id"=>"xxx", "present_channels"=>["/chat-user/core/1"]}
Completed 200 OK in 26ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 1895)
Started GET "/auth/oauth2_basic/callback?code=xxxx&state=xxxx" for 10.10.10.10 at 2024-06-15 18:19:49 +0000
(oauth2_basic) Setup endpoint detected, running now.
(oauth2_basic) Callback phase initiated.
OAuth2::ConnectionError (FinalDestination: all resolved IPs were disallowed)
lib/final_destination/ssrf_detector.rb:105:in `lookup_and_filter_ips'
lib/final_destination/http.rb:15:in `connect'
lib/middleware/omniauth_bypass_middleware.rb:43:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:289:in `call'
Webseitenfehler
Ups
Die Software, die dieses Diskussionsforum antreibt, ist auf ein unerwartetes Problem gestoßen. Wir entschuldigen uns für die Unannehmlichkeiten.
Detaillierte Informationen über den Fehler wurden protokolliert und eine automatische Benachrichtigung generiert. Wir werden uns darum kümmern.
Es sind keine weiteren Maßnahmen erforderlich. Sollte die Fehlersituation jedoch weiterhin bestehen, können Sie zusätzliche Details, einschließlich der Schritte zur Reproduktion des Fehlers, angeben, indem Sie ein Diskussionsthema im Feedback-Bereich der Website veröffentlichen.
Ich habe meine Firewall-Protokolle überprüft, aber keine blockierenden Einträge gefunden! Außerdem befinden sich sowohl Discourse als auch SSO im internen Netzwerk, sodass es keine Firewall-Blockierungen oder Probleme bei der Anfrageabfangung geben sollte!
Aber wenn ich die IP-Adresse der SSO-Website auf das externe öffentliche Netzwerk zeige, funktioniert es wieder normal!
Ist das ein Fehler im Plugin oder ein Konfigurationsproblem meinerseits?
Sie können den Hostnamen Ihrer internen SSO-Site zur Site-Einstellung „allowed_internal_hosts“ hinzufügen. Dann kann Discourse eine Verbindung zu ihr herstellen.
Wie ändere ich die client_id in appid in der URL?
Mein Server unterstützt client_id in der URL nicht, außer appid.
Ich muss das Plugin modifizieren.
Bitte helfen Sie mir.
Ein Jahr später und Sie helfen immer noch bei diesem Beitrag! Danke!! Authentik funktioniert jetzt für mich.
Hallo, ich verwende Oauth2 mit Zalo, aber wir haben das Problem wie angehängt. Könnte jemand den Grund kennen?
Ich habe die Callback-URL konfiguriert: https://sphere.daviteq.com/auth/basic_oauth2/callback
Kann jemand eine authentik-Konfiguration teilen? Ich bin mir ziemlich sicher, dass ich alles richtig eingerichtet habe, aber ich erhalte immer noch (oauth2_basic) Authentication failure! Timeout::Error: Faraday::TimeoutError, Timeout::Error
Dieses Plugin ist jetzt Teil des Discourse-Kerns, wie in Bundling more popular plugins with Discourse core beschrieben. Wenn Sie selbst hosten und das Plugin verwenden, müssen Sie es vor Ihrem nächsten Upgrade aus Ihrer app.yml entfernen.
x-ref


