サーバーからデータを取得するためにWebサービスを使用するiOSアプリがあります。データを取得してJSONフィードをWebページにエコーし、iOSアプリがそれを解釈します。 SSLを使用しているので、転送中のデータが安全でないことに心配はありません。
私の問題は、誰でもWebサービスページにアクセスしてJSONデータを読み取ることができることです。誰かがこのデータを解釈するプログラムを作成することは難しくありません。そのデータにはユーザーの機密情報が含まれています。
ユーザーがURLを入力してデータを表示できないようにする方法、または安全に出力されるJSONフィードを暗号化して、それを読み取るためのキーが必要になるようにする方法を知りたいです。
Webサービスに認証を追加する必要があるように思えます。
あなたの説明から、リクエストは次のようになっているようです:
App --> Web site --> Web service
ユーザーがサービスに登録する必要がある場合、ユーザーがアプリにログインすると、Webサービスで認証され、認証トークンが取得されます。日付が返される前に、Webサービスがユーザーを認証および承認することを確認してください。
App [Auth Token] --> Web site [Auth Token] --> Web service [Auth token]
次に、誰かがWebサービスエンドポイントに直接アクセスした場合、有効な認証トークンがないため、データは取得されません。
認証なしで誰でもあなたのデータへのアクセスを許可すること、特に機密データは巨大な禁止事項です!
このサーバーにアクセスする唯一の方法がアプリケーションを使用している場合は、最も簡単な方法は、アプリケーション固有のSSL証明書を使用することです。リクエストがその証明書を使用しない限り、何も起こりません。
これの唯一の欠点は、アプリケーションにしかアクセスできないことです。別の方法でやりたい場合は、他のいくつかのオプションを実行できます。
VPN。このVPN内にいる場合を除き、サーバーを表示できないため、サーバーにアクセスできません。
アクセス許可と制限付きのAPIキー(最も一般的な方法)
状態とCookie(一般的な方法)、ユーザーによる保存、タイムアウト、安全な暗号化も可能(一般的な方法)