インスタンス ID とは

主な機能

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

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

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

アプリの真正性を確認する

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

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

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

アプリの特定と追跡

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

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

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

クライアントの実装

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

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