Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】How to get a Firebase ID token for testing your API (without writing a script)

2026年10月09日に「Dev.to」が公開したITニュース「How to get a Firebase ID token for testing your API (without writing a script)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Firebase APIのテスト時、特定のユーザーのIDトークン取得にはスクリプトが必要で手間だった。本記事は「Firebase Token Toolkit」というアプリを紹介。サービスアカウントキーとUIDから、簡単操作で本物のIDトークンを生成し、開発効率を上げる。カスタムクレーム編集なども可能だ。

ITニュース解説

多くのシステム開発において、バックエンドAPIはユーザーの認証状態を確認するためにFirebaseのIDトークンを利用している。開発中のAPIをテストする際、特定のユーザーとしてAPIを呼び出し、その動作を確認したい場面は頻繁に発生する。例えば、curlコマンドやPostmanといったツールを使ってAPIリクエストを送る場合、通常のクライアントアプリケーション(ウェブサイトやモバイルアプリ)のようにユーザーがログイン操作を行うことはできないため、Firebaseが提供する「特定のユーザーとしてログインし、IDトークンを発行する」ための直接的なボタンや機能は存在しない。

この課題に対し、これまではいくつかの解決策が取られてきた。一つは、ユーザーのメールアドレスとパスワードを使って直接Firebaseの認証REST APIを呼び出す方法だが、これはパスワード認証を設定しているユーザーにしか使えない。また、Firebaseの認証エミュレーターを使う方法もあるが、これは実際のプロジェクトとは異なる環境であり、実運用に近いテストには不向きな場合が多い。最も一般的な解決策としては、Firebase Admin SDKを使ってカスタムトークンを作成し、それをIDトークンに交換するという小さなスクリプトを作成する方法がある。しかし、このスクリプトをテストのたびに何度も書くのは非常に手間がかかり、開発者の負担となっていた。

このような手間を解消するために開発されたのが「Firebase Token Toolkit」というデスクトップアプリケーションだ。このツールは、特定のユーザーのIDトークンを取得するために必要な2つのステップを、スクリプトを書かずにワンクリックで実行できるようにする。

まず、IDトークンを取得するための基本的な流れを理解しておこう。第一に、Firebase Admin SDKの機能を使って、テストしたいユーザーのUID(ユーザーを一意に識別するID)に基づいて「カスタムトークン」を作成する。このカスタムトークンは、そのユーザーとして認証を行うための一時的な署名付きトークンであり、作成にはFirebaseプロジェクトの「サービスアカウントキー」が必要となる。サービスアカウントキーは、Firebaseプロジェクトが提供する特別な認証情報で、サーバーサイドからFirebaseのサービスを安全に操作するために用いられる。このキーを使うことで、Admin SDKは指定されたUIDを持つユーザーとして署名されたカスタムトークンを生成できる。

第二に、作成したカスタムトークンをFirebaseの認証APIエンドポイント(具体的にはaccounts:signInWithCustomToken)に送信し、同時にプロジェクトのAPIキーを渡す。APIキーは、プロジェクトがFirebaseサービスと通信する際に使用される識別子だ。このリクエストに対してFirebaseは、本物の「IDトークン」と、そのIDトークンを更新するための「リフレッシュトークン」、そしてこれらのトークンの「有効期限」を返してくれる。この方法で取得されたIDトークンは、通常のクライアントアプリケーションがユーザーのログイン後に取得するものと全く同じ形式であり、サーバー側のAPIがFirebaseのIDトークンを検証する際にも、完全に有効なものとして認識される。つまり、あなたのバックエンドAPIは、このIDトークンを受け取って、それが本物のユーザーによって発行された正規のトークンであると判断し、テストを続行できるわけだ。

Firebase Token Toolkitは、これらの複雑な手順をユーザーが意識することなく実行できる。使い方は非常にシンプルだ。まず、FirebaseプロジェクトからダウンロードしたサービスアカウントのJSONファイルを参照して読み込む。次に、「Load apps」ボタンをクリックすると、プロジェクトに登録されているWeb、Android、iOSといった各種クライアントアプリケーションの情報と、それらに紐づけられたAPIキーが自動的にツール内にインポートされる。そして、テストしたいユーザーを一覧から選択し、「Generate」ボタンをクリックするだけで、IDトークンが瞬時に生成される。生成されたIDトークンは、コピーボタンで簡単にクリップボードにコピーでき、さらにそのトークンに含まれる情報(「クレーム」と呼ばれる)がデコードされた状態で表示されるため、トークンの内容をすぐに確認できる。これにより、例えばcurl -H "Authorization: Bearer <IDトークン>" https://localhost:8080/api/meのようなコマンドを使って、生成されたIDトークンをAPIリクエストの認証ヘッダーに含めて、ローカルで動作しているバックエンドAPIを直接テストすることが可能になる。

このツールはIDトークンの生成だけでなく、APIテストをより効率的にするためのいくつかの便利な機能も提供している。一つは「カスタムクレーム」の編集機能だ。FirebaseのIDトークンには、ユーザーに関する追加情報(クレーム)を含めることができる。Firebase Token Toolkitでは、既存のユーザーのカスタムクレームをJSON形式で読み込み、必要に応じて編集し、保存することができる。この際、カスタムクレームに課されている1,000バイトのサイズ制限も、入力中にリアルタイムでチェックされるため、誤った設定を防ぐことができる。

もう一つは「App Check」への対応だ。App Checkは、Firebaseプロジェクトへのリクエストが、本物のアプリケーションから送信されたものであることを確認するセキュリティ機能だ。このツールは、登録済みのデバッグトークンを使ってApp Checkトークンを交換し、それをAPIリクエストのX-Firebase-AppCheckヘッダーに含めることができる。これにより、App Checkが有効になっているAPIに対しても、簡単にテストリクエストを送ることが可能になる。

さらに、APIキーに制限が設定されている場合の対応も万全だ。FirebaseプロジェクトでAPIキーを特定のAndroidアプリケーションやiOSアプリケーションからのリクエストのみに制限している場合、Googleは、そのアプリケーションを識別する情報がリクエストヘッダーに含まれていないと、リクエストを拒否する。Firebase Token Toolkitは、モバイルSDKが通常送信するX-Android-Package、X-Android-Cert(Androidの場合)、またはX-Ios-Bundle-Identifier(iOSの場合)といったヘッダーを自動的に追加してリクエストを送信できるため、制限付きAPIキーを使用している環境でも問題なくテストを実行できる。

このツールを利用する上でいくつか知っておくべきことがある。まず、このツールは本物のFirebaseサービスと通信するため、Authエミュレーターではなく、実際のFirebaseプロジェクトに対して動作する。そのため、テストには専用の「開発プロジェクト」を使用することを強く推奨する。サービスアカウントキーは非常に強力な認証情報であり、これを持っていれば任意のユーザーとしてサインインできてしまうため、運用中の本番プロジェクトで安易に使用すべきではない。また、カスタムクレームを更新した場合、その変更は新しく発行されるIDトークンにすぐに反映されるが、既存のIDトークンは、リフレッシュされるまで(約1時間程度)、古いカスタムクレームを保持し続ける点にも注意が必要だ。

Firebase Token Toolkitは、Rust言語で開発されたネイティブアプリケーションであり、Linux、Windows、macOSといった主要なオペレーティングシステムで動作する。MITライセンスのもとオープンソースとして公開されており、ユーザーの利用状況を追跡するテレメトリー機能は一切含まれていないため、安心して利用できる。GitHub上でスターを付けることで、開発者を応援することもできるだろう。このツールは、APIテストのためにIDトークンを何度も手動で取得したり、スクリプトを書いたりする手間を大幅に削減し、システムエンジニアの作業効率を向上させる強力な助けとなる。

関連コンテンツ

関連IT用語

関連ITニュース