Rails 3.0.12、最新のomniauth、私はGoogleに接続してユーザのメールアドレスを取得できます。しかし、私は、SSLモードでnginxの背後にあるものと同じレールのアプリを実行し、そしてそれは、Googleのページで失敗します。SSLモードでnginxの背後で動作しているときにOmniauthとGoogleとopen_idが壊れた
"The page you requested is invalid."
は、それは私のnginxの設定ファイルですか?私のomniauthの設定?
私はX-Forwarded-Proto: https
がここに特別なタレで知って、私は、SSL Webサーバの背後にある幸せのOpenIDを取得するために行う必要が何かはありますか?
はここで完全なサンプルコードです:あなたはそれが失敗見てrake server
を実行し、このレポ、bundle install
のクローンを作成し、それがうまく動作確認するためにrails s
を実行することができます。 https://github.com/jjulian/open_id_ssl
nginx.conf:
worker_processes 2;
pid tmp/nginx.pid;
error_log log/error.log;
daemon off;
events {
}
http {
client_body_temp_path tmp/body;
proxy_temp_path tmp/proxy;
fastcgi_temp_path tmp/fastcgi;
uwsgi_temp_path tmp/uwsgi;
scgi_temp_path tmp/scgi;
server {
listen 3000 ssl;
ssl_certificate development.crt;
ssl_certificate_key development.key;
ssl_verify_depth 6;
access_log log/access.log;
proxy_buffering off;
location/{
proxy_pass http://127.0.0.1:3300;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto https;
}
}
}
omniauth.rbイニシャライザ:
require 'openid/store/filesystem'
Rails.application.config.middleware.use OmniAuth::Builder do
provider :open_id, :identifier => 'https://www.google.com/accounts/o8/id'
end
routes.rbを:
OpenIdSsl::Application.routes.draw do
match '/auth/open_id/callback' => 'accounts#update'
match '/auth/failure' => 'accounts#failure'
root :to => 'accounts#show'
end
UPDATE:レール3.1用いるこの例。 12とOmniAuth 1.0.3。 Rails 3.1.4およびOmniAuth 1.1.0にアップグレードすると、この問題は解決されます。
Googleがあなたのサーバーに当たらないことは確かですか?テスト証明書を使用している場合は、Googleがその証明書を使用することを拒否する可能性があります。私はtcpdumpを実行して、接続を試みる前に接続が試みられたかどうかを確認します。 – Schmurfy
Googleは決してローカルサーバーに "ヒット"しません - アプリは無効なURLにブラウザをリダイレクトします。私が掲示したサンプルコードを試してください、それはすぐに実行されます。 –