"CSRF détecté" avec Omniauth et Google
Je reçois ce
OmniAuth::Stratégies::OAuth2::CallbackError /auth/google/rappel
csrf_detected | CSRF détecté
Mon code:
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
Mon rappel est de retour à la fois le code et de l'état.
source d'informationauteur Joseph Le Brech
Vous devez vous connecter pour publier un commentaire.
Eu le même problème
Dernier Omniauth-oauth2 mise à jour a introduit la notion "d'état" param est un champ obligatoire.
Certaines personnes suggèrent d'utiliser provider_ignores_state: vrai, mais c'est une mauvaise idée car elle introduit la faille csrf
Suppose que nous allons avoir à revenir à une version précédente de garder google_oauth2 de travail.
Question sur https://github.com/intridea/omniauth-oauth2/issues/58
Ce problème se produit avec des rails lorsque le domaine défini dans
/config/initializer/session_store.rb
est différent de l'origine/redirect_uri définies dans l'api de google console.À supprimer le domaine params ou en utilisant le même domaine sur les deux côtés résolu le problème.
Si vous utilisez Concevoir avec OmniAuth vous devez ignorer l'extra omniauth.rb initializer et ajoutez simplement config.fournisseur de "CLÉ", "SECRET" à l'intérieur de votre initializers/concevoir.rb et puis continuer avec votre mise en œuvre.