インスタンス ID とは

主な機能

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

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

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

アプリの真正性を検証する

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

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

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

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

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

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

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

クライアントの実装

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

詳しい手順については、Android および iOS の実装ガイドをご覧ください。