OIDCプラグインが突然壊れ、新規ユーザーに対してサイレントに失敗する

アカウントを持っていないユーザーのサインインが停止している Discourse インスタンスを実行していますが、その理由がわかりません!これは、Discourse AI プラグインをインストールしてインスタンスを再起動してから数週間前に始まりました。これは、過去数日間の顧客からの苦情を受けて初めて私に報告されました。通常、毎日かなりの数の新規登録があります。

セットアップ

  • 公式 Docker を介したセルフホストの Discourse
  • https://community.enginedj.com
  • 独自の OIDC プロバイダーを使用した OIDC プラグイン (:camera_flash: 1)
  • OIDC 以外の認証はありません(つまり、メール + パスワード登録はありません) (:camera_flash: 2)
  • 最後に成功した新規登録は 2023 年 11 月 22 日午前 5 時 23 分 NZDT でした
  • AI プラグインは 2023 年 11 月 22 日午前 6 時 03 分 NZDT 頃にインストールされました(これにより Discourse インスタンスが再起動されたはずです)
  • 10 月以降のシステム構成変更に関するイベントログはなく、3 月以降の認証に関連するログもありません (:camera_flash: 3)
  • フォーラムでのアクティビティは十分で、ディスク容量/DBなどの問題はありません。

問題

  • サインインフローは正しく機能しますが、既存のアカウントがない復帰ユーザーはログインされません
  • エラーメッセージは表示されません
  • ログにエラーメッセージはありません(ログに CSRF エラーがいくつかありますが、ログイン失敗とは相関していません)
  • OIDC プラグインの詳細ログは、OIDC プロバイダーからデータを正常にクエリし、クレームなどを取得し、問題がないことを示しています (:camera_flash: 4)

試したこと

  • Discourse AI プラグインを無効化
  • Discourse AI プラグインを削除
  • ドメインの不一致に関する Cookie の応答を確認
  • すべてのプラグイン/コンポーネントを最新バージョンに更新しました (:camera_flash: 5)
  • 設定が変更されていないことを確認しました
  • ホストのログを調査しました。特に目立つものはありません。

以下は問題のビデオです。最初のログインは Discourse アカウントを持っていないユーザー用です。2 番目は私の管理者ユーザー用です。

https://www.loom.com/share/3aad210d844849dc8154ce6e5db50d29

次に何を調べるべきか、何かアイデアはありますか?

:camera_flash: 1

:camera_flash: 2

:camera_flash: 3

:camera_flash: 4

:camera_flash: 5

「いいね!」 1

Hi @snikch :wave:

サイトのログインプロセスを実行したところ、JavaScriptコンソールにこのエラーが表示されました。これはテーマID=12から発生しているようで、ログインボタンに追加のスタイルを適用しようとして(失敗して)いるようです。

ブラウザの開発者ツールを使用して、その特定のテーマのJavaScriptを「ブロック」すると、すべてが期待どおりに機能するようです。

そのため、問題を解決するには、テーマID=12を無効にするか、問題のあるコードを修正/削除するように編集する必要があると思います。

とはいえ、このようなテーマエラーによってサイトのログインが完全に壊れることは望ましくありません!そこで、エラー処理を改善できるかどうかを確認します :eyes: (編集:改善のためのPRはこちらです)

「いいね!」 5

すごい、@david さんありがとう。そのエラーを見て、解決するためのカードを作成しましたが、これはユーザーログインとは全く関係がないと勝手に思い込んでいました。ユーザーログインはすべてサーバーサイドで、JSがページをレンダリングする前に起こるものだと想定していました!たくさんの思い込みでした :facepalm: 今、アカウント作成モーダルを表示するために必要であることがわかりました。

本当に助かりました :heart_eyes_cat:

「いいね!」 1

このトピックは21時間後に自動的にクローズされました。返信はもうできません。