Firebase Admin SDKを使用すると、独自のサーバーをFirebaseAuthenticationと統合できます。 Firebase Admin SDKを使用して、ユーザーを管理したり、認証トークンを管理したりできます。これを実行したい理由はいくつかあります。
ユーザー管理
Firebaseユーザーを管理するためにFirebaseコンソールにアクセスする必要があるとは限りません。 adminユーザー管理APIは、それらの同じユーザーにプログラムによるアクセスを提供します。また、ユーザーの完全なデータを取得したり、ユーザーのパスワード、メールアドレス、電話番号を変更したりするなど、Firebaseコンソールではできないことを実行することもできます。
カスタム認証
外部ユーザーシステムをFirebaseと統合できます。たとえば、既存のユーザーデータベースがある場合や、FirebaseAuthenticationがネイティブでサポートしていないサードパーティのIDプロバイダーと統合したい場合があります。
これを行うには、ユーザーを識別する任意のクレームを使用してカスタムトークンを作成できます。これらのカスタムトークンを使用して、クライアントアプリケーションでFirebase認証サービスにサインインし、トークンのクレームで記述されたIDを引き継ぐことができます。このIDは、クラウドストレージなどの他のFirebaseサービスにアクセスするときに使用されます。
本人確認
Firebase認証は主に、クラウドストレージなどの他のサービスへのアクセスを制限するためにアプリのユーザーを識別するために使用されます。このサービスを使用して、自分のサーバーでこれらのユーザーを識別することもできます。これにより、FirebaseAuthenticationでサインインしたユーザーに代わってサーバー側のロジックを安全に実行できます。
これを行うには、Firebase認証でログインしたクライアントアプリケーションからIDトークンを取得し、サーバーへのリクエストにトークンを含めることができます。次に、サーバーはIDトークンを検証し、ユーザーを識別するクレームを抽出します( uid
、ログインに使用したIDプロバイダーなどを含む)。このID情報は、サーバーがユーザーに代わってアクションを実行するために使用できます。
Firebase Admin SDKは、ユーザーの管理、カスタムトークンの生成、IDトークンの確認を可能にすることで、上記の認証タスクを実行するためのメソッドを提供します。
カスタムユーザークレーム
場合によっては、Eメール/パスワード、Google、Facebook、電話など、サポートされているFirebase認証プロバイダーのいずれかで既にサインインしているユーザーにきめ細かいアクセス制御を実装することをお勧めします。カスタムユーザークレームとアプリケーションセキュリティの組み合わせルールはこの機能を提供します。たとえば、Firebase Authentication Email and Passwordプロバイダーでサインインしたユーザーは、カスタムクレームを使用してアクセス制御を定義できます。
ユーザー管理
Firebase Admin SDKは、昇格された権限を持つFirebaseユーザーを管理するためのAPIを提供します。管理者ユーザー管理APIを使用すると、ユーザーの既存の資格情報を必要とせず、クライアント側のレート制限を気にすることなく、プログラムでユーザーを取得、作成、更新、および削除することができます。
ユーザーを管理するカスタムトークンの作成
カスタムトークンを作成する主な用途は、ユーザーが外部またはレガシー認証メカニズムに対して認証できるようにすることです。これは、LDAPサーバーなどのユーザーが制御するものか、InstagramやLinkedInなどのFirebaseがネイティブでサポートしていないサードパーティのOAuthプロバイダーである可能性があります。
Firebase Admin SDKには、カスタムトークンを作成するための組み込みのメソッドがあります。サードパーティのJWTライブラリを使用して、プログラムで任意の言語のカスタムトークンを作成することもできます。
サーバーは、一意の識別子( uid
)を使用してカスタムトークンを作成し、そのトークンをクライアントアプリに渡す必要があります。クライアントアプリは、それを使用してFirebaseにログインします。コードサンプルおよびカスタムトークン作成プロセスの詳細については、「カスタムトークンの作成」を参照してください。
IDトークンの検証
Firebaseクライアントアプリがバックエンドサーバーと通信する場合、サーバー側のロジックを実行できるように、サーバーで現在ログインしているユーザーを特定する必要がある場合があります。これは、ユーザーがFirebaseアプリにログインしたときにFirebaseによって作成されるIDトークンを使用して安全に行うことができます。 IDトークンはOpenIDConnect仕様に準拠しており、ユーザーを識別するためのデータ、およびその他のプロファイルと認証関連の情報が含まれています。独自のバックエンドからこれらのトークンを送信、検証、および検査できます。これにより、現在サインインしているユーザーを安全に識別し、それらを独自のバックエンドリソースに承認することができます。
Firebase Admin SDKには、IDトークンを確認するための組み込みのメソッドがあります。サードパーティのJWTライブラリを使用して、任意の言語のIDトークンをプログラムで検証することもできます。 IDトークン検証プロセスの詳細とコードサンプルについては、IDトークンの検証を参照してください。
カスタムユーザーの主張
Firebase Admin SDKを使用すると、ユーザーアカウントにカスタム属性を設定できます。カスタムユーザークレームを使用すると、ユーザーにさまざまなレベルのアクセス(ロール)を与えることができます。これらのアクセスは、アプリケーションのセキュリティルールで適用されます。
カスタムクレームは、Firebase Admin SDKを介してユーザーで変更された後、IDトークンを介してクライアント側の認証済みユーザーに伝達されます。 IDトークンは、これらのカスタムクレームを配信するための信頼できるメカニズムであり、認証されたすべてのアクセスは、関連する要求を処理する前にIDトークンを検証する必要があります。