2012-02-13 11 views
6

JavaScriptでTwitter OAuth認証を安全に行うにはどうすればよいですか?安全なTwitter JavaScript/jQuery(サーバーサイドヘルパーに加えて)のOAuth認証

私は、ユーザーがTwitterの利用状況やフォロワー/友人を分析できるようにするプログラムを作成しようとしています。私はpython tweepyモジュールを使って動作するサーバー側のバージョンを書いています。

私は人々と共有したいと思いますが、小さなサーバーで実行するのではなく、ブラウザで実行してスケーラビリティを実現したいと考えています。

私は結論が安全それはお勧めできませんということではなく別の質問を参照してください。 JavaScript OAuth sign in with Twitter

1は、アプリのJavaScriptで、消費者(アプリ)秘密またはアクセス(ユーザー)秘密を送った場合は理にかなっています。

しかし、私はここのようにサーバ側でURLを構築できなかった理由 - http://djangosnippets.org/snippets/1353/

が続いてTwitterのマイアプリケーションページでのOAuthツール(ではないから、ブラウザに戻って、このようなものを認証URLを送ります有効な資格情報)

GET &のhttps%3A%2F%2Fapi.twitter.com%2F1%2F &取得%252Faccount%252Fverify_credentials_json%3D%26oauth_consumer_key%GD0bgcgMU4MDwNfKQpLFQS3%26oauth_nonce%3D24ad5049501dee1292afd8cf22307d68%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1329173626 %26oauth_token%uPUpxsBc3D283768289LtQ6R1E z1KeD8DOSsm5XpqJaKI28ysYh%26oauth_version%3D1.0

次に、ユーザーの資格情報で認証して分析を実行するためにjQueryを使用します。

これは重要な作業ですが、それを行うのは嫌いですし、動作しない、または安全でない方法であることがわかります。 (またはすでに完了しています)

それは安全ですか?それは秘密を公開していないようです。

これは動作しますか?

必要なAuthorization:ヘッダーとCookie /リダイレクト処理を使用して、jQueryのnoobの認証を行うためのポインタ/例がありますか?

私は何かが不足しているように感じていますが、これはうまくいかない理由があるか、すでにどこかに存在するはずですが、見つからないという理由があります。どうもありがとう!

答えて

3

問題は、oAuthはあなたのコンシューマーシークレットを渡す必要があるということです。サーバーにURLを作成しても、それをウェブページに戻します。 HTTPプロキシ経由のコンシューマーシークレット

あなたの秘密が公開されないようにするには、プロキシを使用してtwitter認証要求を行い、oauthトークンをブラウザに戻す必要があります。あなたが本当にスケールを心配しているなら、私はGAEやHerokuのような大規模なソリューションを見ていきます。

+0

私は、コンシューマーキーとコンシューマーシークレットの分割のポイントは、鍵を公開する可能性があり、誰も秘密なしには何もできません。 消費者の秘密を持っていないと、消費者の鍵だけで何かできますか? –

+0

はい、そうです。あなたが本質的に提案しているのは、あなたのコンシューマーシークレットを使用してサーバーサインを作成し、それをクライアントに戻すことです。あなたはそれを行うことができますが、サーバーがユーザーに代わってリクエストを行うだけではそれ以上のスケーラビリティはありません。 – Alan

+0

はい、基本的には、認証を代理して、ブラウザに一連のAPI呼び出しをさせたいと思います。これは、数百コールになるでしょう。加えて、彼らは実行中に長い時間がかかり、リソースを縛ります。だから私は本当にサーバー上でそれをしないことを好む、より多くの負荷のオーダーになります。ブラウザにURLまたはトークンを返信し、jQueryまたは純粋なJavaScriptを使用してAPI呼び出しを行うために使用します。 –

0

あなたが提案しているアプローチをよく理解していません。しかし、一般的に、OAuthはブラウザクライアント側で安全に実装することはできません(JavaやFlashなどの安全な環境を除く)。 JavascriptでOAuthプロセスを実装することは可能ですが、秘密/消費者トークンが公開されます。だから誰でもあなたのアプリケーションを、ユーザーの機密データを盗むようないたずらな意図に置き換えることができます。 JSで作業したい場合は、Node.jsを使用してサーバー側でセキュアなプロセス(認証と最終的なトークンの格納)を実装することをお勧めします。

関連する問題