2

開発環境と本番環境で OAuth2 認証を使用する最善の戦略は何ですか?

たとえば、オープン ソースの Web ベースの GitHub クライアントを作成したいと考えています。クライアントを GitHub アプリケーションとして登録しました。OAuth2 仕様によると、アプリケーションの登録中にリダイレクト URL を指定する必要があります。localhost ベースまたは実際の運用 URL のうち、どの redirect_url を使用する必要がありますか? localhost ベース (開発用) を使用すると、本番サイトは明らかに機能しなくなります (逆も同様です)。

client_id と client_secret をパブリック コードに格納しても安全ですか? いいえの場合、それを保存するための最良の戦略は何ですか (つまり、ソース バージョン管理システムに追加されていない構成ファイルに)?

4

1 に答える 1

5

レールにはfigaroという gem を使用しました。

環境固有の変数 (config/application.yml) を定義します。

CALENDAR_SCOPE: https://www.googleapis.com/auth/calendar

production:
  CLIENT_ID: 393sdfgsdfg.apps.googleusercontent.com
  CLIENT_SECRET: sdfgdfsgsg
  OAUTH2_REDIRECT: http://mydomain/users/auth/google_oauth2/callback
  etc...

development:
  CLIENT_ID: 24asdfsadfas.apps.googleusercontent.com
  CLIENT_SECRET: asdfsadf
  OAUTH2_REDIRECT: http://localhost:3000/users/auth/google_oauth2/callback
  etc....

次に、これらをコードで使用します。

client = Google::APIClient.new({:auto_refresh_token => false})
client.authorization.scope = ENV['CALENDAR_SCOPE']
client.authorization.client_id = ENV['CLIENT_ID']
client.authorization.client_secret = ENV['CLIENT_SECRET']
client.authorization.redirect_uri = ENV['OAUTH2_REDIRECT']
etc...

サーバーの起動時に環境を設定することを忘れないでください。例えば:

thin -e production start

また

thin -e development start

おそらく、application.yml ファイルを gitignore したいと思うでしょう。

于 2013-09-17T21:03:51.183 に答える