インスタンス ID とは

主な機能

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

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

Instance ID には、サードパーティがアプリのサーバーサイドで管理されるリソースにアクセスすることを承認するセキュリティ トークンを生成するためのシンプルな API が用意されています。

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

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

アプリのデバイスがアクティブであることを確認する

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

アプリを識別して追跡する

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

Instance ID のライフサイクル

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

クライアントの実装

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

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