Discourse ID non si attiva sulla mia istanza

proxy_set_header X-Forwarded-Proto https; funzionerebbe semplicemente?

La richiesta http/s proviene dal container al server IDP per Discourse ID su Internet. Non c’è nessuna istanza intermedia dove potrei aggiungere/modificare eventuali intestazioni di richiesta.

IMHO e supponendo che “Discourse ID” sia solo OAuth standard, il modo corretto sarebbe o
a) un’opzione di configurazione per Discourse ID dove potrei aggiungere un endpoint di configurazione “well-known” che ha tutti i valori di configurazione OIDC richiesti, incluso il prefisso “https://…”.
b) lo stesso, ma giĂ  codificato nel codice

Sto ancora riflettendo sui dettagli tecnici di Discourse ID…

Puoi cercare i dettagli del Discourse ID nel nostro codice, il protocollo che utilizziamo è tutto nel nostro repository Github. L’unica differenza con altre implementazioni OAuth è che registriamo automaticamente un’istanza. E durante questa auto-registrazione, ci assicuriamo che l’istanza che richiede la registrazione sia chi dice di essere e sia su https (ai giorni nostri, nessuna istanza Discourse dovrebbe essere su http://).

Gli errori http che ho condiviso sopra mi dicono che il tuo sito non è configurato correttamente.

Puoi controllare l’output di quanto segue tramite la console:

Discourse.base_url

SiteSetting.force_https

Se ottieni un URL http:// dal primo comando e false dal secondo, potresti voler impostare SiteSetting.force_https = true e vedere se questo risolve il problema. (Potrebbe anche rompere le cose se la configurazione è errata in altri posti, però. Attenzione.)

1 Mi Piace

Ciao Penar,
forse dobbiamo prima chiarire i dettagli della mia configurazione. È un po’ diversa rispetto alla distribuzione standard.

  • load balancer centrale (https://www.haproxy.org/) che funge da acceleratore SSL per diversi servizi web (non solo per Discourse). L’accesso da Internet a uno qualsiasi di questi servizi è consentito solo tramite https. Il passaggio da http a https viene eseguito sul load balancer stesso, vedi Redirect HTTP to HTTPS in a Few Easy Steps with HAProxy come riferimento)
  • haproxy inoltra le richieste frontend al backend su una rete privata (10.x.x.x) senza crittografia. Questo traffico termina su un nginx locale sull’host docker.
  • nginx inoltra le richieste al socket http del container web_only con proxy_pass ``http://unix``:/mnt/data/discourse/shared/web-only/nginx.http.sock
    (sto usando una configurazione a due container con web_only.yml e data.yml). Vedi templates/web.socketed.template.yml come riferimento

Non ho bisogno di SiteSetting.force_https, poiché tutta la crittografia https viene eseguita al di fuori del container Discourse. Utilizzo già OAuth basato sul plugin Discourse OpenID Connect (OIDC) e con il mio IDP. Il plugin Discourse OIDC contiene un’impostazione per il documento di discovery “well-known” di OpenID Connect. Nel mio caso: https://login.netzwissen.de/realms/netzwissen/.well-known/openid-configuration

Se Discourse ID implementasse qualcosa di simile per il collegamento tra l’istanza del container Discourse e l’IDP di Discourse ID, non ci sarebbero problemi. Poiché “Discourse ID” utilizza un IDP fisso, un tale “URL well-known” potrebbe persino essere codificato in modo fisso, incluso il prefisso https.

Thomas, mi dispiace, non posso aiutarti molto con la tua configurazione specifica. Tutto quello che posso dire è che qualcosa nella tua istanza non è corretto.

Beh, la console JS sul tuo sito non pensa che la crittografia https al di fuori del container stia coprendo tutto. Gli avvisi JS che ho condiviso sopra sono sintomi di un problema simile che stai avendo con l’ID, Discourse stesso nella tua configurazione pensa di funzionare in http e questo è un problema, perché in alcuni casi genererà URL in http.

2 Mi Piace

Mi scuso tantissimo:

Ho confrontato le impostazioni sulla nostra istanza produttiva (PROD) con quelle sull’istanza DEV. Solo l’istanza DEV aveva disattivato l’impostazione force_https. E questo ha funzionato solo perché abbiamo l’acceleratore SSL haproxy davanti.

Ora ho attivato SiteSetting.force_http sull’istanza DEV e Discourse ID funziona bene. Pertanto, distribuiremo anche Discourse ID sulla nostra istanza PROD (forum.netzwissen.de).

Mi scuso per la confusione.

3 Mi Piace

Nessun problema, sono contento che sia stato risolto. Grazie per aver aggiornato!

2 Mi Piace