Admin Auth API の概要

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

ユーザー管理

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

カスタム認証

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

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

ID の確認

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

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

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

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

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

ユーザー管理

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 サービス(Firebase Realtime Database や Cloud Storage など)では、ID トークンを使ってユーザー アクセスが認証されます。また、独自のバックエンドから、これらのトークンを送信、確認、検査することもできます。これによって、現在ログインしているユーザーを安全に特定して、独自のバックエンド リソースへのアクセスを許可できます。

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

ID トークンを検証する

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

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

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

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

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。