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. Sehr bedauerlich. :frowning:

Tatsächlich bedeutet die Inkompatibilität des Plugins folgendes:

  1. Es funktioniert nur auf der ersten Site einer Multisite-Installation (oder auf derjenigen, für die es über DISCOURSE_HOSTNAME konfiguriert ist).
  2. Der Button erscheint in der Login-Oberfläche aller anderen Instanzen.
  3. Diese Buttons schlagen jedoch fehl, ohne dass es eine klare Lösung gibt.

Da es im Channel #plugin kein dediziertes Thema für discourse-saml gibt, schlage ich vor, eines zu erstellen und diese Einschränkung im ersten Beitrag zu erwähnen. Ich bin mir ziemlich sicher, dass sich aus den über 50 Themen, die SAML erwähnen, einiges zusammenfassen lässt. Hätte ich das vorher gewusst, hätte ich meine Dienste anders eingerichtet.

(Übrigens: Der ursprüngliche CSP-Fehler liegt höchstwahrscheinlich daran, dass das Iframe versucht, die ursprüngliche Site statt 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-Installation aktiviert haben. :slight_smile:

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

Jetzt bleibt der SAML-Button (der auf dieser Instanz nicht funktioniert) ausgeblendet.

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