問題: oauth2-basicプラグインを使用したOAuth2ログインでCSRF検出エラー

こんにちは。

oauth2-basic プラグインを使用して OAuth2 経由でログインしようとした際に、「csrf_detected」エラーが発生しました。問題の詳細は以下のとおりです。

  1. 「ログイン」をクリックすると、以下の URL にリダイレクトされます。
    https://myforum/auth/basic_oauth2
  2. 次に、以下の URL に 302 リダイレクトされます。
    https://myforum/auth/failure?message=csrf_detected

再現手順:

ログインを試みると、以下の curl コマンドがリクエストをシミュレートします。

curl -vvvv 'https://myforum/auth/oauth2_basic' \
  -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
  -H 'accept-language: zh-CN,zh;q=0.9' \
  -H 'cache-control: max-age=0' \
  -H 'content-type: application/x-www-form-urlencoded' \
  -H 'cookie: _forum_session=k9aHXc2cWsx%2FMBL26KTV33PSo8jC9Am47UBoT5Zq9qYAm2nKoU2BJkAR1bgc6U%2BYqsL3%2F3sjiYRmJoNr3JuvzkjdYl%2FjzT9djkq%2BYjSmN16EUEdZIdOl%2Fiv1MohQkthKSnOpUdXLTxHZBezxTg4O%2Bs6LUZ7HzCjpT3lxm24FS4xOPkU5QnSHBM%2F7GazZRhGywXsHKGdJ6fY0kVo%2BJHNNHBZu--qQKGn36Xh7jvKPEs--I1b3oz4nv2xe%2Fmi0bKPLog%3D%3D' \
  -H 'origin: https://myforum' \
  -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36' \
  --data-raw 'authenticity_token=doSNHEhj23HibAEZf0znqzevPNPq9Bub69Xnq18mKARw8GiGP-cokbg7k0qUvRgH3kayeJK7_-boeoOvX6GKqQ'

結果として、「csrf_detected」メッセージが表示され、302 リダイレクトが発生します。

< HTTP/2 302
< location: /auth/failure?message=csrf_detected

発見事項:

  • authenticity_token パラメータを省略すると、ログインフローは正常に機能し、期待どおり OAuth2 ログインページにリダイレクトされます。

質問:

/auth/oauth2_basic への GET リクエストに authenticity_token が含まれている場合、システムはそれをチェックして、トークンが無効な場合に CSRF エラーが発生するように思われます。しかし、まだログインしていない段階で、どのように authenticity_token を取得できるのかが疑問です。

これは予期された動作でしょうか、それとも初期ログインプロセスにおける CSRF トークンの処理方法に問題があるのでしょうか?

何か助けやガイダンスがあれば幸いです。

よろしくお願いいたします。

ブラウザが使用しているものとバックエンドが期待しているものの間に不一致がある場合に、このエラーが頻繁に発生します。

force_https をオンにして、問題が解決するかどうか試していただけますか?

それでも解決しない場合、リクエストパスは何ですか?