0

RubyonRailsのGoogleAppsでOmniAuthOpenIDを実行しようとしています。「:identifier =>'https://www.google.com/accounts/o8/site-xrds?hd=example.com'」を指定すると、すぐに使用できるはずです。example.com私のターゲットユーザーが由来するドメインです。

/ auth / googleにアクセスすると、ユーザーは問題なくGoogleにリダイレクトされ、このopenid.identityはGoogleから返されます。

... &openid.identity=http://example.com/openid?id=xxxxxxxxxxxxxxxxxxxxxxx ...

ただし、使用しているexample.comには、 http: //example.com/に設定されている正しい「rel ='openid2.provider'」<link/>タグがないため、omniauth-openidが試行すると検出が失敗します。もう一度Googleに確認してください。

自動を実行せずにhttps://www.google.com/a/example.com/o8/ud?be=o8をサーバーとして直接定義できるように、デフォルトの検出動作を回避するための迅速でクリーンな方法はありますか?発見?

ありがとう!

4

2 に答える 2

0

Steveが推奨するgemを使用する前に、検出プロセス全体をローカルでのみ実行するための回避策を考え出しました。これは、一部の人にとって役立つ可能性があります。単一のGoogleAppsドメインからのユーザーのみを受け入れる場合は、次のことを行うことができます。

  1. 127.0.0.1 example.com/ etc/hostsのように行を追加します。

  2. nginxのような軽量のHTTPサーバーをセットアップし、openid(。htmlを追加しないでください)というファイルを作成し、そこに<link rel ="openid2.provider"...>タグを追加します。

これは、アプリケーションが外部httpsサーバーに一部のリクエストを送信するのを防ぐため、ruby-openid-apps-discoveryを使用するよりもわずかに高速です。

于 2012-08-20T07:20:57.647 に答える
0

omn​​iauth-openidはruby-openidを使用していると思います。もしそうなら、あなたはそれを簡単に動作させることができるはずです:

gem install ruby-openid-apps-discovery

次に、リクエストを行う前にどこかにスローインします

require 'gapps_openid'

Google Appsには、わずかに異なる検出プロトコルがあります。これは、そのgemが提供するものです。

于 2012-08-17T23:31:46.477 に答える