Su un’istanza di Discourse appena configurata, SAML fallisce a causa della Content-Security-Policy predefinita che nega lo script che invia il modulo…
Ospitiamo molti clienti che utilizzano con successo il plugin SAML con CSP. Puoi condividere l’errore che vedi nella console del browser?
Tutti i nostri hosting utilizzano CDN, quindi il mio sospetto è che la regola CSP non funzioni per chi non utilizza le CDN ![]()
Sì, scusa, intendevo farlo, ma non riesco a riprodurre il messaggio di errore, anche se l’errore persiste.
Ora ricevo solo errori di “contenuto misto” sull’icona favicon e sull’icona Apple. Le immagini sono state caricate prima che fosse attivata l’opzione force_https, ma credo che questa impostazione dovrebbe gestire l’origine per tutte le icone… Si tratta di un bug?
Sto cercando di riprodurre l’errore originale che ho ricevuto, ma finora senza successo. L’errore visualizzato a schermo è: “Spiacenti, si è verificato un errore durante l’autorizzazione del tuo account. Riprova.” Credo che si tratti di un ticket non valido, anche se tutte le configurazioni corrispondono a un’istanza funzionante esistente sia su Discourse che su Keycloak. Strano.
Sì, scusa, intendevo farlo, ma non riesco a riprodurre il messaggio di errore, anche se l’errore persiste.
Ok, ho individuato l’errore. Credo che derivi dalla configurazione:
- Si tratta di un’istanza multisito con ps.zoethical.org come ‘principale’, per la quale SAML è stato configurato originariamente.
- L’istanza forum.zoonklopper.be mostra un pulsante SAML, ma l’ambito è definito per ps.zoethical.org.
(saml) Authentication failure! invalid_ticket: OneLogin::RubySaml::ValidationError, https://ps.zoethical.org is not a valid audience for this Response - Valid audiences: https://forum.zonnklopper.be
Se aggiungo l’ambito ps.zoethical.org, ricevo un altro errore:
(saml) Authentication failure! invalid_ticket: OneLogin::RubySaml::ValidationError, The response was received at https://forum.zonnklopper.be/auth/saml/callback instead of https://ps.zoethical.org/auth/saml/callback
Il plugin SAML non è compatibile con le istanze multisito.
Sì, è proprio ciò che ho appena capito. È molto spiacevole. ![]()
Quindi, in realtà, l’incompatibilità del plugin significa che:
- funzionerà sul primo sito di una rete multisito (o su quello per cui è configurato tramite
DISCOURSE_HOSTNAME); - il pulsante apparirà nell’interfaccia di login di tutte le altre istanze;
- ma quei pulsanti non funzioneranno, senza una soluzione chiara.
Poiché non esiste un argomento dedicato in #plugin per discourse-saml, suggerisco di crearne uno e menzionare questa limitazione nel primo post. Sono quasi certo che si possano fare delle sintesi partendo da i oltre 50 argomenti che menzionano SAML. Se lo avessi saputo prima, avrei configurato i miei servizi in modo diverso.
(A proposito, l’errore CSP originale è molto probabilmente dovuto al fatto che l’iframe cerca di caricare il sito originale invece di quello corrente.)
Nascondi il pulsante SAML su multisito
Questa è una soluzione rapida per chi ha attivato il plugin SAML su una configurazione multisito. ![]()
- Vai su Amministrazione > Temi e seleziona “installa nuovo”;
- Crea un nuovo componente (con il nome: “Nascondi pulsante SAML”);
- Aggiungi il CSS:
#login-buttons .btn.btn-social.saml { display: none; /* plugin incompatibile con multisito */ } - Applica il componente a tutti i temi.
Ora il pulsante SAML (che non funziona su questa istanza) rimarrà nascosto.
Questo argomento è stato chiuso automaticamente dopo 3 giorni. Non sono più ammesse nuove risposte.