Auth0へのログイン直後に同じブラウザでCSRF検出によりOAuthアカウント作成が失敗する

Configure sign up and log in with Auth0 using the OAuth2 Basic Plugin の指示に従って oauth2 プラグインを設定しました。

フローは次のようになります。

「ログイン」をクリックしてから「dbt コミュニティアカウントを使用する」をクリックすると、アカウントが正常に作成され、ユーザー名などを設定できるアカウント作成ダイアログが表示されます。

この動作を示す Loom 動画:

oauth2 debug auth を有効にしたところ、ログに (oauth2_basic) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected と表示されました。

質問:

  1. これは Discourse の問題ですか、それとも Auth0 の問題ですか?Slack 用のほぼ同様のログインフローが問題なく機能するため、Discourse の問題だと推測しています。
  2. なぜログインページでは機能するのに、Auth0 側からトリガーされると機能しないのですか?
  3. デフォルトの CSRF エラーメッセージは、ブラウザが変更された場合やログインフローに時間がかかりすぎた場合に発生することを示唆しています。どちらも当てはまりませんが、他に原因は何でしょうか?

@joellabes 様 - 「アプリケーションログインURI」のAuth0設定に入力したURLを確認していただけますでしょうか?

{your forum}/auth/oauth2_basic になっているはずです。末尾に /callback が付いている場合、それが説明されている問題の原因となっている可能性があります。

「いいね!」 2

@davidさん、ありがとうございます。現在、「Application Login URI」ボックスには何も入力していませんが、「Allowed callback URLs」には入力しています。

https://discourse.getdbt.com/auth/oauth2_basic を「Application Login URI」フィールドに入力し、「Allowed Callback URLs」フィールドに https://discourse.getdbt.com/auth/oauth2_basic/callback を入力したままにしておくべきでしょうか?

「いいね!」 1

はい、試すことができます。

「コミュニティフォーラムでヘルプを入手する」リンクがどのように実装されているか、もう少し詳しく教えていただけますか?リンクはどこに移動しますか?現在、ボタンはAuth0によって処理されており、その新しいURL構成を追加すると、ボタンがログインフローを開始するために正しく /auth/oauth2_basic にリンクされると想定しています。

「いいね!」 1

返信が遅くなり申し訳ありません。クリスマス休暇から戻ったばかりです。

以下のように行いました。

しかし、結果は同じです。

そのリンクは https://dev-zb38hsho.us.auth0.com/samlp/5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr を指しています。ここで dev-zb38hsho は私たちの Auth0 インスタンス ID であり、5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr は Auth0 の Discourse アプリケーションのクライアント ID です。

そのリンクにアクセスすると https://dev-zb38hsho.us.auth0.com/u/login?state=SESSION_SPECIFIC_TOKEN にリダイレクトされます。

キーは、Discourse が /auth/oauth2_basic で認証フローを開始し、Auth0 にリダイレクトしてから /auth/oauth2_basic/callback に戻ることです。

Auth0 に最初の URL からログインを開始してもらうことを期待していましたが、Discourse がコールバック URL に直接ジャンプしているようです。

フォーラムのボタンを /auth/oauth2_basic にポイントするように更新していただけますか?これにより認証フローが開始され、すぐに Auth0 にリダイレクトされるため、全体的なユーザーエクスペリエンスは同じになるはずです。

「いいね!」 4

はい、うまくいきました!Continueボタンが表示されるインタースティシャルページで一時停止しますが、OAuthフローを安全にトリガーするためにユーザー操作が必要なのですか?

もしそれを可能にする方法があれば

それはボーナスですが、これは素晴らしいです!ありがとうございます🙏

そのページは、サイトに複数のログイン方法がある場合に表示されます。「ローカルログイン」(ユーザー名/パスワード)を無効にすると、ログインプロセスに直接進むはずです。

「いいね!」 3

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