インスタンス ID とは

主な機能

Instance ID は、認証用の一意の ID を提供するだけでなく、他のサービスで使用するセキュリティ トークンを生成することもできます。その他の機能は次のとおりです。

セキュリティ トークンを生成する

インスタンス ID は、サードパーティがアプリのサーバーサイドのマネージド リソースにアクセスすることを承認するセキュリティ トークンを生成するためのシンプルな API を提供します。

アプリの信頼性を確認する

インスタンス ID トークンをサーバーに渡し、インスタンス ID サービスを使用してアプリのパッケージ名を検証し、有効な署名があるかどうかを確認します。Instance ID Cloud Service でトークンを検証すると、既知のアプリを特定できます。コストと冗長なラウンド トリップ通信を削減するには、これらのトークンを保存するようにサーバーを構成して、チェックを 1 回だけ行うようにします。セキュリティ上の懸念がある場合は、アプリでトークンまたはインスタンス ID 自体を削除して、新しいトークンまたはインスタンス ID を生成できます。また、Instance ID サーバーは、バグやセキュリティの問題を検出すると、トークンまたは Instance ID の更新を開始します。

アプリのデバイスが有効であることを確認する

Instance ID サーバーは、アプリがインストールされているデバイスが最後に使用された日時を通知できます。この情報を使用して、アプリのデータを保持するか、プッシュ メッセージを送信してユーザーを再エンゲージメントするかを決定します。

アプリを特定して追跡する

インスタンス ID は世界中のすべてのアプリ インスタンスで一意であるため、データベースでアプリ インスタンスを一意に識別して追跡するために使用できます。サーバーサイド コードは、Instance ID クラウド サービスを介して、Instance ID が本物であり、サーバーに登録された元のアプリと同じ ID であることを確認できます。プライバシー保護のため、アプリはインスタンス ID を削除して、データベース内の履歴との関連付けを解除できます。アプリが次回 Instance ID を呼び出すと、以前の ID とはまったく関係のない新しい Instance ID が取得されます。

インスタンス ID のライフサイクル

  1. アプリがオンラインになると、Instance ID サービスは InstanceID を発行します。InstanceID は、秘密鍵がローカル デバイスに保存され、公開鍵が Instance ID サービスに登録されている公開/秘密鍵ペアによってバックアップされます。
  2. アプリは、getID() メソッドを使用して、必要に応じて新しい InstanceID をリクエストできます。アプリをサポートするサーバーがある場合は、アプリでサーバーに保存できます。
  3. アプリは、getToken() メソッドを使用して、必要に応じてインスタンス ID サービスからトークンをリクエストできます。また、InstanceID と同様に、アプリは独自のサーバーにトークンを保存することもできます。アプリに発行されたすべてのトークンは、アプリの InstanceID に属します。
  4. トークンは一意で安全ですが、セキュリティ上の問題が発生した場合や、デバイスの復元中にユーザーがアプリをアンインストールして再インストールした場合、アプリまたはインスタンス ID サービスでトークンの更新が必要になることがあります。アプリは、Instance ID サービスからのトークン更新リクエストに応答するリスナーを実装する必要があります。

クライアントの実装

インスタンス ID は Android と iOS の両方で動作します。それぞれ、クライアント アプリに適切なライブラリを含める必要があります。Android では Google Play 開発者サービスが必要です。トークンを生成する場合は、 Google Developers Console で生成されたプロジェクト ID が必要になります。

詳しい手順については、AndroidiOS の実装ガイドをご覧ください。