Impossibile determinare i problemi Passkey dietro il Proxy Cloudflare

AGGIORNAMENTO: Risolto!

Per risolvere il problema, sono riuscito ad abilitare force_https che ha risolto tutto per noi. A quanto pare, le passkey stavano tentando di instradare a http:// ma quel traffico misto non veniva segnalato dal browser. A quanto pare CloudFlare non era direttamente il problema. Spero che questo possa aiutare qualcun altro in futuro.

Post Originale:

Il Problema

Ciao! Recentemente ho spostato la mia istanza Discourse dietro un tunnel Cloudflare e sembra che tutto funzioni bene ad eccezione delle passkey. Sia le registrazioni di passkey esistenti che quelle nuove falliscono, ma non credo che i log rendano molto chiaro il MOTIVO del fallimento. Spero che qualcuno qui possa aiutarmi a trovare le restanti informazioni di troubleshooting necessarie per risolvere questo problema:

Informazioni Rilevanti

Informazioni sulla mia configurazione

  • Utilizzo Discourse Docker per distribuire Discourse.
  • Postgres e Redis sono distribuiti esternamente.
  • Distribuito su Ubuntu su un’istanza AWS EC2.
  • Come detto in precedenza, il tunnel Cloudflare fornisce TLS e funge da proxy.

Cosa ho provato

  • Ho controllato la mia configurazione per assicurarmi che Discourse si aspetti il nome host dei miei forum (forums.example.com)
  • Discourse è stato configurato per la porta 80 HTTP poichĂ© Cloudflare gestisce TLS
  • Quando HTTP non è riuscito, ho tentato di forzare Discourse solo a SSL fornendo un certificato autofirmato e reindirizzando Cloudflare a Discourse sulla porta 443 utilizzando il protocollo HTTPS.
  • Mi sono assicurato che Cloudflare stesse passando forums.example.com al mio sito. So che lo sta facendo poichĂ© qualsiasi altro header host causa un 404 al NGINX di Discourse.

Log Rilevanti

  • Questa parte è leggermente complicata. Discourse non fornisce nulla lato server (per quanto ne so) e sia che utilizzi Bitwarden, iCloud Keychain, Chrome o Firefox, il risultato è lo stesso.
  • I log per la passkey stessa sono quasi inesistenti
  • La parte piĂą utile che ho trovato è stata dalla console degli strumenti per sviluppatori di Firefox / Chrome quando si tentava di creare una nuova passkey. Viene restituito quanto segue:
{
  "errors": [
    "The origin of the authentication request does not match the server origin."
  ]
}

Questa è un’indicazione abbastanza chiara che c’è qualcosa che non va tra il client e discourse (AKA il proxy), ma questi log non indicano quali informazioni vengono scambiate per risolvere ulteriormente questo problema.

Qualcuno può aiutarmi a capire altre impostazioni o posizioni di log da controllare, o ha altri suggerimenti per il troubleshooting? Trovo improbabile, ma suppongo che un errore nella configurazione di Nginx potrebbe anche essere un fattore. Ho essenzialmente un doppio proxy tra il client e Discourse con sia CloudFlare che Nginx in esecuzione. Dovrei riconsiderare qualche aspetto di questa configurazione?

In termini di priorità, certamente è bello averlo risolto, ma poiché ho solo circa 8 utenti su qualche migliaio che utilizzano le passkey (con altri metodi di accesso che funzionano perfettamente), non sono troppo stressato per questo.

2 Mi Piace