私は、この質問が以前にさまざまな形で尋ねられたことを知っています。ただし、「https を使用する」という回答は求めていません。私はすでに HTTPS を使用しており、送受信されるペイロードの機密性については心配していません。
ただし、私が取り組んでいる iPhone アプリケーションは、私が構築した REST API と通信しています (アプリケーションとサーバーを制御しているため、提案は大歓迎です)。
認証に OAuth2 プロトコルを使用しています。つまり、「API キー」は、クライアント ID とクライアント シークレットの組み合わせであり、access_token
. その後、すべてのリクエストはaccess_token
、リクエスト本文の HMAC を含むヘッダー (クライアント シークレットをキーとして使用) を使用してサーバーに送信されます。この追加の唯一の理由は、誰かが JUST で API リクエストを作成できないようにするためでしたaccess_token
。
私が話している API は、アプリケーションをリリースするときに公開される予定です。したがって、他の人が API 呼び出しを行うことができることを必ずしも心配しているわけではありません。
私が気にしているのは:
- アプリケーションのクライアント資格情報を使用して API 呼び出しを行うことができる人々 (つまり、アプリケーションからのものではないことをサーバー側で検出できないことを意味します)
- 私のクライアント ID が許可する追加のスコープを悪用することができ、従来の API ユーザーにはありません。
私の推測では、この問題に対する解決策は実際にはありません (UIWebView を使用し、美化された webapp を作成する以外に) と思いますが、とにかくここで尋ねてみようと思いました。
アプリで使用する必要がある場合、クライアント ID/クライアント シークレットを保護する方法を考えられますか?