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.)
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.
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.
Nessun problema, sono contento che sia stato risolto. Grazie per aver aggiornato!