サーバー認証の概要

概要

Firebase では、独自のサーバーを Firebase Authentication に統合できます。公式のいずれかの Firebase Server SDK を使用するか、サードパーティの JSON Web Token(JWT)ライブラリを使用して、認証トークンを管理できます。これを行う理由は、主に 2 つあります。

カスタム認証

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 Server SDK では、カスタム トークンを生成し、ID トークンを確認することで上記の 2 つの認証タスクを実行するメソッドを提供しています。

カスタム トークンの作成

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

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

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

カスタム トークンの作成

ID トークンの確認

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

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

ID トークンを検証する

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