Discourse-saml はマルチサイト互換ではありません

新規に設定された Discourse インスタンスでは、デフォルトの Content-Security-Policy がフォームを送信するスクリプトを拒否するため、SAML が失敗します。

CSP と SAML プラグインを正常に使用している多くの顧客をホストしています。ブラウザコンソールに表示されているエラーについて共有していただけますか?

当社のホスティングはすべて CDN を使用しているため、CDN を使用していないユーザーに対して CSP ルールが機能していないのではないかと推測しています。

「いいね!」 1

はい、申し訳ありません。以前はそうする予定でしたが、エラーメッセージを再現できず、それでもエラーは残っています。
現在は favicon と apple icon で「mixed content」エラーのみが発生しています。これらの画像は force_https がチェックされる前にアップロードされましたが、この設定ですべてのアイコンのソースを処理すべきだと考えています。これはバグでしょうか?

以前発生した元のエラーを再現しようとしていますが、まだ成功していません。画面上に表示されるエラーは「Sorry, there was an error authorizing your account. Please try again.」です。無効なチケットが原因だと思われますが、Discourse と Keycloak の両側の設定は、既存の動作しているインスタンスと一致しています。奇妙です。

はい、すみません。以前はそうするつもりでしたが、エラーメッセージを再現できませんでした。ただし、エラーは残っています。

わかりました、エラーの原因を見つけました。設定に問題があるようです:

  1. マルチサイト環境で、ps.zoethical.org が「メイン」サイトであり、元々 SAML が設定されています。
  2. forum.zoonklopper.be インスタンスには SAML ボタンが表示されていますが、スコープは ps.zoethical.org に対して定義されています。
(saml) 認証失敗!invalid_ticket: OneLogin::RubySaml::ValidationError, https://ps.zoethical.org はこのレスポンスの有効な対象ではありません - 有効な対象: https://forum.zonnklopper.be

ps.zoethical.org を対象に追加すると、別のエラーが発生します:

(saml) 認証失敗!invalid_ticket: OneLogin::RubySaml::ValidationError, レスポンスは https://ps.zoethical.org/auth/saml/callback ではなく https://forum.zonnklopper.be/auth/saml/callback で受信されました

SAML プラグインはマルチサイトに対応していません。

「いいね!」 1

はい、まさに今それに気づきました。非常に残念です。:frowning:

つまり、実際にはプラグインの非互換性により、以下のようになります:

  1. マルチサイトでは最初のサイト(または DISCOURSE_HOSTNAME 経由で設定されているサイト)でのみ機能します
  2. ボタンは他のすべてのインスタンスのログインUIに表示されます
  3. しかし、それらのボタンは明確な解決策なしで失敗します。

discourse-saml 用の #customization:plugin 専用のトピックがないため、トピックを作成し、最初の投稿でこの注意点について言及することを提案します。SAMLについて言及された50以上のトピック からいくつかをまとめられると思います。もし事前にこれを知っていれば、サービスの設定を別々にしていたでしょう。

(ちなみに、元のCSPエラーは、iframeが現在のサイトではなく元のサイトを読み込もうとしているためである可能性が高いです。)

マルチサイトでのSAMLボタンの非表示

マルチサイトでSAMLプラグインを有効にした人々のための簡単な修正です。:slight_smile:

  1. 管理画面 > テーマ に移動し、「新規インストール」をクリック
  2. 新しいコンポーネントを作成(名前:「Hide SAML Button」)
  3. CSSを追加:
    #login-buttons .btn.btn-social.saml {
        display: none; /* プラグインはマルチサイトと互換性がありません */
    }
    
  4. すべてのテーマにコンポーネントを適用

これで、このインスタンスでは機能しないSAMLボタンが画面に表示されなくなります。

このトピックは3日後に自動的に閉鎖されました。新しい返信は許可されていません。