Admin Auth API の概要

概要

Firebase Admin SDK を使用すると、独自のサーバーを Firebase Authentication に統合できます。これらの SDK を使用して、ユーザーや認証トークンの管理ができます。この方法で管理する理由は、主に 3 つあります。

ユーザー管理

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

カスタム認証

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

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

ID の確認

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

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

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

ユーザー管理

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

ユーザーを管理する

カスタム トークンの作成

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

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

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

カスタム トークンの作成

ID トークンの確認

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

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

ID トークンを検証する

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