2016-03-23 13 views
1

クラウドにサードパーティのサービス用のAPIキーを格納する方法を見つけることを試みています(たとえば、Twitterに接続したい、APIキーと秘密が必要ですiOSアプリケーションのクラウドにAPIキーを保存する

私は具体的にはクラウドに格納し、何らかの形でそれを要求に応じて使用する方法を探しています(アプリケーション自体に埋め込みたくない)。私はAPIキーと秘密を簡単にアクセスできるようにしたくありませんが、依然としてユーザーがサードパーティのAPIリクエストを作成できるようにしたいと考えています。

私は、次のアイデアだったので、ちょうど私の頭の上から、セキュリティの専門家ではない:

  1. ストア私のサーバー上のAPIキーと秘密を(例えば店舗TwitterのAPIキー/秘密)アプリキー/秘密のペア
  2. ため
  3. ユーザーがサードパーティのサービスへの要求をしようとするたびに、iOSアプリは、私のサーバーへのリクエストを行うにはiOSのクライアントがキー/秘密を受信すると、それは使用してOAuthの認証プロセスを開始します私のサーバからちょうど受け取ったアプリの鍵/秘密(さらにユーザーの資格情報)

httpsでキー/シークレットの値を送受信する限り、これは十分安全ですか?それとも暗号化する必要がありますか?それでも十分でしょうか?

+0

この質問をsecurity.stackexchange.com – Narf

答えて

1

クライアントのサードパーティサービスのクライアント資格情報(APIキーとシークレット)をクライアントに返すことはお勧めしません。 iOSアプリのような公開クライアントでは、これらのことを秘密にすることはできません。

サーバーにサードパーティAPIへの呼び出しを行い、その結果をアプリケーションにプロキシすることをお勧めします。そうすれば、APIキーとシークレットをサーバーに安全に保存することができます。サードパーティのAPIが変更された場合は、すべてのiOSアプリではなくサーバーコードを更新するだけです。

+0

で聞いてくださいこれは私のAPIの使用を制限していませんか?私はこの方法でこれを行う方法を見つけようとしていました。なぜなら、サードパーティ製のAPIにリクエストを出している各ユーザーは、それぞれのユーザーが独自のAPIクォータを持っているのに対し、サーバーがAPIのプロキシとして機能するのであれば、サーバー)は、すべてのユーザーに代わってAPIへのすべてのリクエストを行います。 – Vlad

+0

@Vlad APIキーは、OAuth2クライアントの資格情報フローで使用され、アプリケーションが独自の方法でリソースにアクセスできるようにします。ユーザーに代わってリソースにアクセスする場合は、認証コードフローを調べ、オフラインアクセスを要求する必要があります。認可サーバーは、アプリケーションがアクセストークンを取得するために使用できるリフレッシュトークンを発行します。 – MvdD

関連する問題