2013-03-07 6 views
6

私たちは開発中のAndroidアプリケーションで消費されるRailsでJSON REST APIを開発しています。特定のAndroidアプリケーションでのみ使用できるようにAPIを保護する方法はありますか?Androidクライアントで使用するためのREST APIを確保する

APIは読み取り専用であり、ユーザー関連の情報や機密情報は一切含まれていません。しかし、合理的な範囲では、濫用を防止し、アプリの使用のみを制限したいと考えています。

私は簡単にAPIに認証トークンを追加して、アプリでそれを配布するが、可能性:我々は、おそらく我々はBASIC認証を使用する場合、SSLにAPIを上に移動する必要があると思います

  1. 確かに決められた人物がAndroid APKバイナリを開き、とにかくauthトークンを公開するのは自明です。

状況は、あなたのサービスを利用したいすべての人に出て秘密を与える必要は反ショップで自分のWiFiパスワードを掲示カフェに似ているようだ、ほとんど最初の場所でそれを持って無意味なようです。

最も合理的なアプローチは何ですか?

答えて

6

公開されていないおそらく公開されているAPIを1つのアプリケーションでしかアクセスできないようにしたいのであれば、あなたのAPIを使用している人々があなたのAPIを使用しないようにしてください。

APIを使用するためにすべてを試してみる人を意味します。

これが当てはまらない場合は、Authトークンを追加することは簡単なことではなく、少なくともあなたのAPIに遭遇した人のための大きな足掛かりです。これを実装することは非常に悪い考えではありません。

この認証はユーザーベースではなくアプリケーションベースであり、ユーザー入力に依存する認証を望まないためです。申請は純粋に申請書によって行われなければなりません。

これは、とにかく(ハードコードされたトークンを追加する)必要があることを意味します。特定の人がアクセスを発見してトークンとメソッドを要求することは非常に困難です。

状況によって異なりますが、私はSSLとハードコードされたトークンに行きます。

いくつかの余分なセキュリティ:

  • リリーストークンのみ定期的に リクエストを送信するために必要なアプリケーションへのアクセストークン。より少ない機会の人々が ハードコーディングされた要求トークンを傍受することを意味しますが、 が期限切れのセッションベースのアクセストークンを傍受します。たぶん、すべてのアプリケーションをインストールするたびにこれを1回実行してください。
  • このリクエストトークンをエンコードしてから送信します。意味 あなたのアプリを逆コンパイルする必要があります。
  • 難読化コード(逆コンパイルを難しくする)
関連する問題