[解決済み] OmniauthとGoogleで "CSRFが検出された "件
2022-03-11 05:49:30
質問
次のような現象が起きています。
OmniAuth::Strategies::OAuth2::CallbackError at /auth/google/callback csrf_detected|CSRF を検出しました。
私のコード
require 'sinatra'
require "sinatra/json"
require "sinatra/config_file"
require 'omniauth-oauth2'
require 'omniauth-google-oauth2'
use Rack::Logger
config_file "config/app_config.yml"
use Rack::Session::Cookie, secret: '5fb7w345y3489f523y4h'
configure do
enable :sessions
end
use OmniAuth::Builder do
provider :google_oauth2, settings.google[:client_id], settings.google[:secret],
{
:scope => "userinfo.profile",
:access_type => "offline",
:prompt => "select_account consent",
:name => "google"
}
end
get '/list' do
json get_list
end
get '/' do
%Q|<a href='/auth/google'>Sign in with Google</a>|
end
get '/auth/:name/callback' do
@auth = request.env['omniauth.auth']
@auth.inspect
end
私のコールバックはコードとステートの両方を返しています。
どうすればいいですか?
同じ問題が発生した
<ブロッククオート
(google_oauth2) コールバックフェーズが開始されました。
(google_oauth2)
認証に失敗しました! csrf_detected:
OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF
検出
前回の Omniauth-oauth2 のアップデートで "state" パラメータに必須フィールドが追加されました。
provider_ignores_state: true を使うことを提案する人もいますが、これは csrf の欠陥を引き起こすので、良くないアイデアです。
google_oauth2が動作するようにするには、以前のバージョンにダウングレードする必要がありそうです。
で発行してください。 https://github.com/intridea/omniauth-oauth2/issues/58
関連
-
[解決済み】StringからIntegerへの暗黙の変換がない(TypeError)?
-
[解決済み】そのようなファイルやディレクトリはありません @ rb_sysopen ruby
-
[解決済み] RubyのHashをキーでアルファベット順にソートする方法
-
[解決済み] Ruby の .reject! と .delete_if の比較
-
[解決済み] ルビースリープやディレイは1秒以下?
-
[解決済み] Rubyで中央値を計算する
-
[解決済み] gemのインストール中に "permission denied "エラーが発生するのはなぜですか?
-
[解決済み] ルビー.天井と.床
-
[解決済み] 動的な定数割り当て
-
[解決済み] Ruby 2.0.0p0 IRB警告。"DLは非推奨です。Fiddleをお使いください。"
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyで新しい文字列を作成せずに文字列をトリミングする標準的な方法は何ですか?
-
[解決済み】RVMをアンインストールする方法は?[重複] RVMのアンインストール方法
-
[解決済み] Ruby 'require' エラー: そのようなファイルをロードできない
-
[解決済み] ルビー階乗関数
-
[解決済み] Ruby、スタックレベルが深すぎる (SystemStackError)
-
[解決済み] RMagickのインストール。MagickWand.hが見当たりません。
-
[解決済み] Rubyのコロン演算子とは何ですか?
-
[解決済み] レイルズ・ジェネレート」を逆手に取る方法
-
[解決済み] Gem::Specification.reset中に未解決のスペックがある。
-
[解決済み] 構文エラー、予期しない ',', 期待する ')' 。