2013-10-29 19 views
14

私たちはhttpプロキシの背後にあるRailsアプリケーションでlinkedin-omniauth gemを使用しようとしています。アウトバウンドHTTPプロキシを使用したOmniauth

私はomniauthにプロキシを使用させるために見つけることができるすべてを試しましたが、動作させることができません。

provider :linkedin, 'xxx', 'xxx', { 
    :client_options => { 
    :proxy => ENV["HTTP_PROXY"] || ENV["http_proxy"] 
    } 
} 

私のために働くと私はソースで「代理」の言及を見ていないしない:

following postが使用することを提案しています。私はまた、プロキシのハードコーディングを試みました。失敗。

This SO post doesn't work for me either.

私はまた、プロキシとネットの初期化子:: HTTPを作成しました。それも機能しません。私はシェルとbashrcにプロキシをエクスポートしました。そして/ etc/environmentにあります。何も働いていない。

omniauthにアウトバウンドプロキシを使用させるにはどうすればよいですか?

--- --- UPDATE

以下受け入れ答えながら、実際には、ほとんどの宝石は今のOAuth2に依存している、LinkedInののOauthのた​​めに働くありません。 、後で宝石(株式会社での作業のプロキシを取得するために

https://github.com/simonmorley/oauth2/blob/master/lib/oauth2/client.rb#L36

人気のFacebook:これは:: Netで離れないHTTPプロキシ/接続設定のための規則上の別のセットを持っているファラデーを紹介します。グーグル、GitHubの彼らは何に依存している宝石チェック)、あなたはあなたの初期化子に次のように使用する必要があります。

provider :foursquare, 'xxx', 'xxx', { 
    :client_options => { 
     :connection_opts => { 
     :proxy => "http://127.0.0.1:3128" 
     } 
    } 
    } 
+0

これは素晴らしいアップデートです!私は確かにOAuth2のバンドワゴンにいる、私のサイトをプロバイダにしなければならなかった。すべてのプロキシがsquidプロキシ(http://www.squid-cache.org/)のように動作しない限り、ローカルホストからポート3128までは一般的なケースにはあまりにも特殊すぎると聞こえるので、プロキシ設定を確認することができます。 – Marc

+1

3128 localhost、jus 'for testing :) Blimey、あなたのサーバーをプロキシの背後に埋め込むと思っていた人は、非常に苦労するでしょう! – simonmorley

+1

あなたは合唱団、プレイボーイに説教しています! – Marc

答えて

2

私はomniauth-Twitterに同じ問題が修正され、その年前からこのpull-requestに出くわしました。これに

require 'omniauth-oauth' 
require 'multi_json' 

module OmniAuth 
    module Strategies 
    class Twitter < OmniAuth::Strategies::OAuth 
     option :name, 'twitter' 
     option :client_options, {:authorize_path => '/oauth/authenticate', 
           :site => 'https://api.twitter.com'} 

:あなたはfixを見れば、彼らがしたすべては、これを変更したことが表示されます

require 'omniauth-oauth' 
require 'multi_json' 

module OmniAuth 
    module Strategies 
    class Twitter < OmniAuth::Strategies::OAuth 
     option :name, 'twitter' 
     option :client_options, {:authorize_path => '/oauth/authenticate', 
           :site => 'https://api.twitter.com', 
         :proxy => ENV['http_proxy'] ? URI(ENV['http_proxy']) : nil} 

私はこれがなるのOAuth 「プロキシ」値パラメータを設定仮定要求ヘッダーを通過します。私はomniauth-linkedinリポジトリをforkしてOmniAuth::Strategies::LinkedInに同様の変更を加えると、プロキシサーバーを介して認証されるはずです。私はの線に沿って変更を提案:

require 'omniauth/strategies/oauth' 

module OmniAuth 
    module Strategies 
    class LinkedIn < OmniAuth::Strategies::OAuth 
     option :name, "linkedin" 

     option :client_options, { 
     :site => 'https://api.linkedin.com', 
     :request_token_path => '/uas/oauth/requestToken', 
     :access_token_path => '/uas/oauth/accessToken', 
     :authorize_url => 'https://www.linkedin.com/uas/oauth/authenticate', 
     :proxy => ENV['http_proxy'] ? URI(ENV['http_proxy']) : nil 
     } 

これはOmniAuthは、消費パラメータ化、および適切要求に置くことができるURIインスタンスに環境設定を変換する必要があります。

+0

乾杯するだけで、これを再訪するだけです。 – simonmorley

+0

実際には、ほとんどのoauth宝石に注目したわずかな計画の変更は、Oauth2を使用しています。将来検索する人の例を追加しました。 google rnでかなり高いようです。 – simonmorley