Admin Auth API の概要

Firebase Admin SDK を使用すると、独自のサーバーを Firebase Authentication と統合できます。また、ユーザーや認証トークンの管理に Firebase Admin SDK を使用できます。この方法で管理することによる利点はいくつかあります。

ユーザー管理

Firebase コンソールにアクセスして Firebase ユーザーを管理するやり方が常に便利とは限りません。そこで、Admin User Management API からプログラムによって Firebase ユーザーにアクセスすることもできるようになっています。さらに、この API を使用すると、ユーザーの全データの取得や、ユーザーのパスワード、メールアドレス、電話番号の変更など、Firebase コンソールでは実行できない操作を行えます。

カスタム認証

Firebase には外部ユーザー システムを統合できます。たとえば、既存のユーザー データベースが存在する場合や、Firebase Authentication でネイティブにサポートされないサードパーティの ID プロバイダに統合したい場合などが考えられます。

こうした場合、ユーザーを特定する任意のクレームでカスタム トークンを作成します。これらのカスタム トークンは、クライアント アプリケーションの Firebase Authentication サービスへのログインと、トークンのクレームに記述される ID の設定に使用されます。この ID は、Cloud Storage などの他の Firebase サービスへのアクセス時に使用します。

ID の確認

Firebase Authentication は主にアプリのユーザーを特定して、Cloud Storage などの他のサービスへのアクセスを制限する目的に使用されます。また、独自のサーバーでユーザーを特定するのに利用することもできます。これによって、Firebase Authentication でログインしたユーザーの権限で、サーバー側ロジックを安全に実行できます。

これを行うために、Firebase Authentication でログインしたクライアント アプリケーションから ID トークンを取得し、サーバーに対するリクエストにこのトークンを含めます。サーバーではこの ID トークンを確認し、ユーザーを特定するクレーム(uid、ログインした ID プロバイダなど)を抽出します。これでサーバーはこの ID 情報を使用して、ユーザーの権限でアクションを実行できるようになります。

Firebase Admin SDK に用意されているメソッドを使用してユーザーを管理し、カスタム トークンを生成し、ID トークンを確認することによって、上記の認証タスクを実行できるようになります。

カスタム ユーザー クレーム

サポートされているいずれかの Firebase Auth プロバイダ(メールとパスワード、Google、Facebook、スマートフォンなど)ですでにログインしているユーザーに対して、きめ細かいアクセス制御を実装しなれければならない場合があります。カスタム ユーザー クレームとアプリケーションのセキュリティ ルールを組み合わせて使用することで、このような機能を実現できます。たとえば、Firebase Authentication のメールとパスワードで認証するプロバイダでログインしたユーザーに対して、カスタム クレームを使用してアクセス制御を定義できます。

ユーザー管理

Firebase Admin SDK には、管理者権限で Firebase ユーザーを管理するための API が用意されています。この Admin User Management API では、ユーザーの既存の認証情報がなくても、プログラムによってユーザーの取得、作成、更新、削除ができます。また、クライアントサイド レート制限を懸念する必要もありません。

ユーザーを管理する

カスタム トークンの作成

作成したカスタム トークンの主な用途として、外部または従来の認証メカニズムに対してユーザーの認証を可能にすることがあります。これに該当するのは、LDAP サーバーなどユーザー自身が制御する認証メカニズムや、Firebase でネイティブにサポートされないサードパーティ OAuth プロバイダ(Instagram や LinkedIn など)です。

Firebase Admin SDK には、カスタム トークンを作成するための組み込みメソッドが用意されています。また、サードパーティの JWT ライブラリを使用して、任意の言語でカスタム トークンをプログラムによって作成できます。

サーバーは一意の ID(uid)でカスタム トークンを作成し、そのトークンをクライアント アプリに渡す必要があります。このトークンは、クライアント アプリで Firebase へのログイン時に使用されます。カスタム トークン作成プロセスの詳細とコードサンプルについては、カスタム トークンの作成をご覧ください。

カスタム トークンを作成する

ID トークンの確認

Firebase クライアント アプリがバックエンド サーバーと通信する場合、ユーザーの権限でサーバーサイド ロジックを実行できるように、サーバーで現在ログインしているユーザーを特定することが必要になる場合があります。この処理は、ユーザーが Firebase アプリにログインしたときに Firebase によって作成される ID トークンを使用することにより安全に行うことができます。ID トークンは OpenID Connect 仕様に準拠し、ユーザーを特定するためのデータと、その他のプロフィールや認証に関連する情報を含みます。独自のバックエンドから、これらのトークンを送信、確認、検査することもできます。これによって、現在ログインしているユーザーを安全に特定して、独自のバックエンド リソースへのアクセスを認可できます。

Firebase Admin SDK には、ID トークンを検証するための組み込みメソッドが用意されています。また、サードパーティ JWT ライブラリを使用することで、任意の言語で ID トークンをプログラムによって確認できます。ID トークンの確認プロセスに関する詳細とサンプルコードについては、ID トークンの確認をご覧ください。

ID トークンを検証する

カスタム ユーザー クレーム

Firebase Admin SDK を使用すると、ユーザー アカウントのカスタム属性を設定できます。カスタム ユーザー クレームを使用することで、ユーザーにさまざまなアクセスレベル(ロール)を付与できます。このようなアクセスレベルは、アプリケーションのセキュリティ ルールに適用されます。

Firebase Admin SDK でユーザーのカスタム クレームが変更されると、ID トークンによってクライアント側の認証済みユーザーに伝播されます。ID トークンは、このようなカスタム クレームを配信するための信頼できる配信メカニズムです。すべての認証アクセスでは、関連リクエストを処理する前に ID トークンを検証する必要があります。

カスタム クレームでアクセスを制御する