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 quello che ho appena capito. È una situazione davvero spiacevole. ![]()
Quindi, in pratica, la non compatibilità del plugin implica che:
- funzionerà solo sul primo sito di una rete multisito (o su quello per cui è configurato tramite
DISCOURSE_HOSTNAME); - il pulsante apparirà nell’interfaccia di accesso di tutte le altre istanze;
- ma quei pulsanti non funzioneranno e non ci sarà una soluzione chiara.
Dato che non esiste un argomento dedicato in #customizzazione:plugin per discourse-saml, suggerisco di crearne uno e di menzionare questa limitazione nel primo post. Sono quasi certo che si possa fare un po’ di pulizia tra i più di 50 argomenti che menzionano SAML. Se avessi saputo questa cosa prima, avrei configurato i miei servizi in modo diverso.
(P.S. L’errore CSP originale è probabilmente dovuto al fatto che l’iframe tenta di caricare il sito originale invece di quello corrente.)
Nascondere il pulsante SAML in un multisito
Questa è una soluzione rapida per chi ha attivato il plugin SAML in un ambiente multisito. ![]()
- Vai su Amministrazione > Temi e clicca su “installa nuovo”.
- Crea un nuovo componente (con nome “Hide SAML Button”).
- Aggiungi il seguente CSS:
#login-buttons .btn.btn-social.saml { display: none; /* plugin non compatibile con multisito */ } - Applica il componente a tutti i temi.
Ora il pulsante SAML (che non funziona su questa istanza) non sarà visibile.
Questo argomento è stato chiuso automaticamente dopo 3 giorni. Non sono più ammesse nuove risposte.