開発環境におけるSSOの実装作業中に、助けを求めています。

ローカルマシンにDiscourseをセットアップし、SSOログインを設定したいと考えています。ログインをクリックするとユーザーをリダイレクトできますが、リダイレクトされるとエラーが継続的に発生します。ログも有効にし、次のようなメッセージが表示されます。
Nonce is incorrect, was generated in a different browser session, or has expired
使用しているPythonファイルは次のとおりです。Discourse-setup/main.py at main · kamleshjoshi8102/Discourse-setup · GitHub

また、私の場合はポート4201で実行されているため、ログイン時のリダイレクト先をポート4201に設定している点もご留意ください。

エラーをトリガーしているメソッドは次のとおりです。

  def nonce_valid?
    if SiteSetting.discourse_connect_csrf_protection
      nonce && @secure_session[nonce_key].present?
    else
      nonce && Discourse.cache.read(nonce_key).present?
    end
  end

これは、nonce が Discourse によって生成され、ユーザーを Discourse にリダイレクトするのと同じセッションで生成されたことを確認しています。
discourse_connect_csrf_protection サイト設定を false に設定してみてください。デフォルト値は true です。これは非表示のサイト設定であるため、Rails コンソールからのみ無効にできます。

discourse_connect_csrf_protection 設定が有効な場合、SSO 認証プロセス全体がブラウザのリダイレクトを通じて行われることを保証します。バックグラウンドリクエスト session/sso を開始して認証プロセスを開始する場合は、無効にする必要があります。詳細はこちら: DiscourseConnect flow no longer functions - #5 by david.

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.