2012-03-03 16 views
2

私はAndroid用に開発中で、現在認証のためにfacebook-android-sdkを使用しています。 私が見ることができるのは、そのコードでアプリの秘密を使用していないということです。extendAccessToken用のアプリ秘密を保護する

Facebookがアクセストークンを拡張するために必要なoffline_access権限を削除するようになりました。残念ながら、sdkのextendAccessTokenメソッドは単独ではありません。私には受け入れられない公式のFacebookアプリケーションがインストールされている必要があります。

私はextendAccessTokenを直接実装することを決めました(iphone SDKの実装と同様)。 問題は、アクセストークンを拡張するためのHTTPリクエストがclient_secretフィールドを必要とすることです。つまり、コード自体にアプリのシークレットを入れる必要があります。リバースエンジニアリングが容易なAndroid/Javaアプリケーションでは、これはまったく安全ではありません。

代替手段はありますか?

+0

あなたの質問に興味があります。クライアントがhttpリクエストに秘密を入れることによってリスクが生成されるのですか、それともクライアントがあなたのandroid.apkに秘密を持つことによって作成されるのでしょうか? – Mel

+0

GETリクエストには含まれているため、サードパーティのサーバーがなければ保護することはできません。なぜ本当にそれを保護する方法がない場合、あなたがそれを公開してはならないと言っているのはなぜなのか、私には不思議に思う。 oauth/access_tokenはモバイル/デスクトップアプリケーションには使用できないし、auth.extendSSOAccessTokenはSSOなしでは使用できないようだ。 要するに、offline_accessパーミッションを削除する前にFacebookは適切なextendAccessToken実装をAndroid SDKに追加する必要があります。もちろん、これは起こりません。 – roee88

+0

完了するために、extendAccessTokenに関する機能リクエストがあります:http://developers.facebook.com/bugs/329021273822477?browse=search_4f8ae199bad505720643390 client_secretを保護するための別のレポートを追加する必要があります。 – roee88

答えて

0

自分のサーバーでこれを行うためのコードをホストし、クライアントがサーバーへの呼び出しによってトークンを拡張するのはなぜですか?

+0

アプリケーションはクライアント側のみで、サーバーは関与しません。 また、仮に私が現在のトークン(まだ有効かもしれない)を私に送ることを要求するサーバを追加すると仮定すると、それはユーザの本当のセキュリティ上の問題です。 – roee88

+0

HTTPSを超えていない場合は、クライアントアクセス可能なコードでアプリを秘密にするよりも確実に安全です。 – Igy

+0

OK。他の選択肢はありますか?私は本当にサーバーを追加したくありません。 – roee88

0

ここで、トークンの生成/拡張に関して、Android/iOS SDKについてこれまでに発見したことがあります。

トークンを拡張するSDKと3つのメソッドでトークンクライアント側を生成する方法が2つ見つかりました。

生成中:

1)FacebookアプリSSOトークンを生成します。

2)Webブラウザ(iOS)/ Webダイアログ(Android/BB)。 Android/BBのiOSとSSO以外のトークンでSSOトークンを生成

これらのトークンはすべて長期トークンです。

拡張:

1)iOS/Androidアプリ。 Androidの場合、ユーザーがアプリケーションにサインインしている場合のみ、そうでなければ、バインドされたサービスへの呼び出しは何も返しません。エラーでもありません。そのシナリオでiOSをテストしていない。

2)auth.extendSSOAccessToken。これは、私が知る限り、公式アプリが存在しない場合でもiOS SDKが使用する古いAPIのエンドポイントです。 SSO(Androidのポップアップ・ダイアログ)で生成されなかったトークンでこのエンドポイントを使用すると、トークンがSSOで生成されていないことを示すmsgというエラー・コード10が表示されます。これにより、トークンがSSOを介して生成されている限り動作する可能性があります。あなたの疑惑が間違っている、それはあなたに "Facebookアプリケーションのアクセストークンが提供されていません"というメッセージのエラーコード100を与えます。これは、私が知る限り、Androidでは完全に役に立たないこのメソッドを残します。

3)oauth/access_token。これはFBが彼らのroadmapで使用するように指示するエンドポイントです。もちろん、この方法では、a)あなたのAPP_SECRET(FBが強く示唆していない)をapk逆コンパイル/アンパッケージを介して公開します。b)短期トークンを長期トークンに拡張するためにのみ機能します。だからAndroid/iOSのときに返されるデフォルトの長期トークンで始める場合は、まず短期トークンを生成してから、このメソッドのクライアントサイド(安全ではない)またはサーバサイド(それ以外のすべての人のために)。長期トークンから短期トークンを生成するにはどうすればよいですか?私が知っていたと願います。(。

これまでのところ、これを達成するためのアイデアは見つかりませんでした。

これは、少なくとも、サーバーを持つ人々に長期トークンを拡張するための安全な方法を提供します。

関連する問題