Ho trovato il problema: l’header non era impostato su “Content-Type: application/json”. E vedo che era lo stesso per @qlands sopra.
L’unico problema rimasto per me ora è lo stesso di @nodomain: l’account viene creato correttamente ma l’avatar non è incluso. Risposta di esempio:
Body: {
"access_token":"...",
"token_type":"bearer",
"expires_in":"3600",
"scope":"profile",
"profile" : {
"id":1234,
"email": "...",
"name": "...",
"picture": "https://somedomain.com/somevalidpicture.jpg"
}
}
Ed è analizzato correttamente, poiché appare nel seguente log:
OAuth2 Debugging: after_authenticate response:
creds: {"token"=>"...", "expires_at"=>1702053692, "expires"=>true}
uid: 1234
info: {"email"=>"...", "name"=>"...", "avatar"=>"https://somedomain.com/somevalidpicture.jpg"}
extra: {}
Ho verificato che l’indirizzo dell’immagine sia corretto e le sue dimensioni siano 300x300.
Qualche idea a riguardo?
Modifica: qualcuno ha appena creato un account e ha prelevato l’immagine da Gravatar. Forse l’immagine valida nel json viene sovrascritta da un risultato vuoto da Gravatar?
Authentik come provider OAuth
Sto attualmente sperimentando con Authentik e vorrei chiedere se qualcun altro ha esperienza con esso e discourse?
Purtroppo non ho trovato un documento di supporto ufficiale per discourse.
Ci sono molte impostazioni con cui armeggiare ![]()
Portainer ha un’implementazione OAuth molto più semplice.
Portainer, solo per confronto:
Come va? Voglio implementare SSO con Authentik su Discourse e Ghost, ma il mio progetto è al momento in attesa.
Qualsiasi consiglio sarà molto apprezzato ![]()
Qualcuno ha riscontrato il problema in cui l’SSO si trova su una rete interna e, quando Discourse tenta di accedere al sito SSO utilizzando un indirizzo IP interno, diventa inaccessibile?
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'
Errore pagina web
Oops
Il software che alimenta questo forum di discussione ha riscontrato un problema imprevisto. Ci scusiamo per l'inconveniente.
Le informazioni dettagliate sull'errore sono state registrate e è stata generata una notifica automatica. Ci occuperemo di questo.
Non è necessaria alcuna ulteriore azione. Tuttavia, se la condizione di errore persiste, è possibile fornire ulteriori dettagli, inclusi i passaggi per riprodurre l'errore, pubblicando un argomento di discussione nella categoria di feedback del sito.
Ho controllato i log del mio firewall, ma non ho trovato alcun record di blocco! Inoltre, sia Discourse che SSO si trovano sulla rete interna, quindi non dovrebbero esserci problemi di blocco del firewall o di intercettazione delle richieste!
Ma quando punto l’indirizzo IP del sito SSO sulla rete pubblica esterna, funziona di nuovo normalmente!
Si tratta di un bug nel plug-in o di un problema di configurazione da parte mia?
Puoi aggiungere l’hostname del tuo sito SSO interno all’impostazione del sito ‘allowed_internal_hosts’. In questo modo Discourse potrà connettersi ad esso.
Come cambiare il client_id in appid nell’url?
Il mio server non supporta client_id nell’url tranne appid.
Devo modificare il plugin.
Per favore aiutami.
Un anno dopo e stai ancora aiutando con questo post! Grazie!! Authentik ora funziona per me.
Ciao, sto usando Oauth2 con Zalo, ma abbiamo riscontrato il problema allegato. Qualcuno conosce il motivo?
Ho configurato l’URL di callback come: https://sphere.daviteq.com/auth/basic_oauth2/callback
Qualcuno può condividere una configurazione di authentik? Sono abbastanza sicuro di aver configurato tutto correttamente ma continuo a ricevere (oauth2_basic) Authentication failure! Timeout::Error: Faraday::TimeoutError, Timeout::Error
Questo plugin è ora incluso nel core di Discourse come parte di Bundling more popular plugins with Discourse core. Se stai auto-ospitando e utilizzi il plugin, devi rimuoverlo dal tuo app.yml prima del tuo prossimo aggiornamento.
x-ref


