Admin Auth API の概要
Identity Platform は、アプリやサービスに対するユーザー認証をサポートする拡張インフラストラクチャ上に構築されています。Firebase Admin SDK を使用して独自のサーバーと Identity Platform を統合し、ユーザーや認証トークンを管理できます。この方法で管理することによる利点はいくつかあります。
ユーザー管理
Google Cloud コンソール(Google Cloud コンソール)にアクセスして Identity Platform ユーザーを管理するという方法が、常に使いやすいわけではありません。そこで、Admin User Management API からプログラムによって Firebase ユーザーにアクセスすることもできるようになっています。さらに、この API を使用すると、ユーザーの全データの取得や、ユーザーのパスワード、メールアドレス、電話番号の変更など、Google Cloud コンソールでは実行できない操作を行えます。
カスタム認証
Identity Platform には外部ユーザー システムを統合できます。たとえば、既存のユーザー データベースが存在する場合や、Identity Platform でネイティブにサポートされないサードパーティの ID プロバイダに統合したい場合などが考えられます。
こうした場合、ユーザーを特定する任意のクレームでカスタム トークンを作成します。これらのカスタム トークンは、クライアント アプリケーションの Identity Platform サービスへのログインと、トークンのクレームに記述される ID の設定に使用されます。この ID は、Cloud Storage などの他の Identity Platform サービスへのアクセス時に使用します。
ID の確認
Identity Platform は主にアプリのユーザーを特定して、Cloud Storage などの他のサービスへのアクセスを制限する目的に使用されます。また、独自のサーバーでユーザーを特定するのに利用することもできます。これによって、Identity Platform でログインしたユーザーの権限で、サーバー側ロジックを安全に実行できます。
これを行うために、Identity Platform でログインしたクライアント アプリケーションから ID トークンを取得し、サーバーに対するリクエストにこのトークンを含めます。サーバーではこの ID トークンを確認し、ユーザーを特定するクレーム(uid
、ログインした ID プロバイダなど)を抽出します。これでサーバーはこの ID 情報を使用して、ユーザーの権限でアクションを実行できるようになります。
Firebase Admin SDK に用意されているメソッドを使用してユーザーを管理し、カスタム トークンを生成し、ID トークンを確認することによって、上記の認証タスクを実行できるようになります。
カスタム ユーザー クレーム
サポートされているいずれかの Identity Platform 認証プロバイダ(メールとパスワード、Google、Facebook、スマートフォンなど)ですでにログインしているユーザーに対して、きめ細かいアクセス制御を実装しなれければならない場合があります。カスタム ユーザー クレームとアプリケーション セキュリティ ルールを組み合わせて使用することで、このような機能を実現できます。たとえば、Identity Platform のメールとパスワードで認証するプロバイダでログインしたユーザーに対して、カスタム クレームを使用してアクセス制御を定義できます。
ユーザー管理
Firebase Admin SDK には、管理者権限で Identity Platform ユーザーを管理するための API が用意されています。この Admin User Management API では、ユーザーの既存の認証情報がなくても、プログラムによってユーザーの取得、作成、更新、削除ができます。また、クライアント側レート制限を懸念する必要もありません。
ユーザーを管理カスタム トークンの作成
作成したカスタム トークンの主な用途として、外部または従来の認証メカニズムに対してユーザーの認証を可能にすることがあります。これに該当するのは、LDAP サーバーなどユーザー自身が制御する認証メカニズムや、Identity Platform でネイティブにサポートされないサードパーティ OAuth プロバイダ(Instagram や LinkedIn など)です。
Firebase Admin SDK には、カスタム トークンを作成するための組み込みメソッドが用意されています。また、サードパーティの JWT ライブラリを使用して、任意の言語でカスタム トークンをプログラムによって作成できます。
サーバーは一意の ID(uid
)でカスタム トークンを作成し、そのトークンをクライアント アプリに渡す必要があります。このトークンは、クライアント アプリで Identity Platform へのログイン時に使用されます。カスタム トークン作成プロセスの詳細とコードサンプルについては、カスタム トークンの作成をご覧ください。
ID トークンの確認
Identity Platform クライアント アプリがバックエンド サーバーと通信する場合、ユーザーの権限でサーバー側ロジックを実行できるように、サーバーで現在ログインしているユーザーを特定することが必要になる場合があります。この処理は、ユーザーが Identity Platform アプリにログインしたときに Identity Platform によって作成される ID トークンを使用することにより安全に行うことができます。ID トークンは OpenID Connect 仕様に準拠し、ユーザーを特定するためのデータと、その他のプロフィールや認証に関連する情報を含みます。独自のバックエンドから、これらのトークンを送信、確認、検査することもできます。これによって、現在ログインしているユーザーを安全に特定して、独自のバックエンド リソースへのアクセスを認可できます。
Firebase Admin SDK には、ID トークンを検証するための組み込みメソッドが用意されています。また、サードパーティ JWT ライブラリを使用することで、任意の言語で ID トークンをプログラムによって確認できます。ID トークンの確認プロセスに関する詳細とサンプルコードについては、ID トークンの確認をご覧ください。
カスタム ユーザー クレーム
Firebase Admin SDK を使用すると、ユーザー アカウントのカスタム属性を設定できます。カスタム ユーザー クレームを使用することで、ユーザーにさまざまなアクセスレベル(ロール)を付与できます。このようなアクセスレベルは、アプリケーションのセキュリティ ルールに適用されます。
Firebase Admin SDK でユーザーのカスタム クレームが変更されると、ID トークンによってクライアント側の認証済みユーザーに伝播されます。ID トークンは、このようなカスタム クレームを配信するための信頼できる配信メカニズムです。すべての認証アクセスでは、関連リクエストを処理する前に ID トークンを検証する必要があります。