Discourse-saml ist nicht multisite-kompatibel

Auf einer neu konfigurierten Discourse-Instanz schlägt SAML fehl, da die standardmäßige Content-Security-Policy das Skript ablehnt, das das Formular absendet…

Wir hosten viele Kunden, die das SAML-Plugin erfolgreich mit CSP nutzen. Können Sie uns den Fehler mitteilen, den Sie in der Browserkonsole sehen?

Unsere gesamte Hosting-Infrastruktur nutzt CDNs, daher vermute ich, dass die CSP-Regel für Nutzer ohne CDNs nicht funktioniert :thinking:

1 „Gefällt mir“

Ja, sorry, ich wollte das tun, kann die Fehlermeldung aber nicht reproduzieren – obwohl der Fehler weiterhin besteht. Jetzt erhalte ich nur noch „Mixed Content“-Fehler beim Favicon und beim Apple-Icon. Die Bilder wurden vor dem Aktivieren von force_https hochgeladen, aber ich gehe davon aus, dass diese Einstellung die Quelle für alle Icons regeln sollte… Ist das ein Bug?

Ich versuche, den ursprünglichen Fehler nachzustellen, hatte bisher aber keinen Erfolg. Der auf dem Bildschirm angezeigte Fehler lautet: „Sorry, there was an error authorizing your account. Please try again.“ Ich vermute, es handelt sich um ein ungültiges Ticket, obwohl alle Konfigurationen mit einer funktionierenden Instanz sowohl auf der Discourse- als auch auf der Keycloak-Seite übereinstimmen. Seltsam.

Ja, entschuldigen Sie bitte. Ich hatte vor, dies zu tun, konnte die Fehlermeldung jedoch nicht reproduzieren – obwohl der Fehler weiterhin besteht.

OK, ich habe den Fehler gefunden. Ich denke, er rührt von der Einrichtung her:

  1. Es handelt sich um eine Multisite-Instanz mit ps.zoethical.org als der ‘Hauptinstanz’, für die SAML ursprünglich konfiguriert wurde.
  2. Bei der Instanz forum.zoonklopper.be erscheint zwar eine SAML-Schaltfläche, aber der Geltungsbereich ist für ps.zoethical.org definiert.
(saml) Authentifizierungsfehler! invalid_ticket: OneLogin::RubySaml::ValidationError, https://ps.zoethical.org ist kein gültiger Empfänger für diese Antwort – Gültige Empfänger: https://forum.zonnklopper.be

Wenn ich den Empfänger ps.zoethical.org hinzufüge, erhalte ich einen anderen Fehler:

(saml) Authentifizierungsfehler! invalid_ticket: OneLogin::RubySaml::ValidationError, Die Antwort wurde unter https://forum.zonnklopper.be/auth/saml/callback statt unter https://ps.zoethical.org/auth/saml/callback empfangen

Das SAML-Plugin ist nicht mit Multisite kompatibel.

1 „Gefällt mir“

Ja, das ist mir gerade auch aufgefallen. Das ist sehr bedauerlich. :frowning:

Das bedeutet konkret, dass die Inkompatibilität des Plugins Folgendes zur Folge hat:

  1. Es funktioniert auf der ersten Site einer Multisite (oder auf derjenigen, für die es über DISCOURSE_HOSTNAME konfiguriert ist).
  2. Der Button wird in der Login-Benutzeroberfläche aller anderen Instanzen angezeigt.
  3. Diese Buttons werden jedoch fehlschlagen, ohne dass eine klare Lösung angeboten wird.

Da es kein dediziertes Thema in Customization > Plugin für discourse-saml gibt, schlage ich vor, eines zu erstellen und diesen Hinweis im ersten Beitrag zu erwähnen. Ich bin mir ziemlich sicher, dass sich aus den 50+ Themen, die SAML erwähnen eine gewisse Konsolidierung ergibt. Hätte ich das vorher gewusst, hätte ich meine Dienste anders eingerichtet.

(Übrigens ist der ursprüngliche CSP-Fehler höchstwahrscheinlich darauf zurückzuführen, dass der Iframe versucht, die ursprüngliche Seite anstelle der aktuellen zu laden.)

SAML-Button auf Multisite ausblenden

Dies ist eine schnelle Lösung für Personen, die das SAML-Plugin auf einer Multisite aktiviert haben. :slight_smile:

  1. Gehe zu Admin > Themes und klicke auf „Neu installieren“.
  2. Erstelle eine neue Komponente (mit dem Namen: „SAML-Button ausblenden“).
  3. Füge CSS hinzu:
    #login-buttons .btn.btn-social.saml {
        display: none; /* Plugin ist nicht mit Multisite kompatibel */
    }
    
  4. Wende die Komponente auf alle Themes an.

Nun bleibt der SAML-Button (der auf dieser Instanz nicht funktioniert) außerhalb der Sicht.

Dieses Thema wurde automatisch nach 3 Tagen geschlossen. Neue Antworten sind nicht mehr erlaubt.