マルチテナンシーを使用した認証
このドキュメントでは、マルチテナント Identity Platform 環境でユーザーを認証する方法を説明します。
始める前に
プロジェクトでマルチテナンシーを有効にして、テナントを構成していることを確認してください。その方法については、マルチテナンシーのスタートガイドをご覧ください。
また、Client SDK をアプリに追加する必要もあります。
コンソールで Identity Platform ページに移動します。 Google Cloud
Identity Platform ユーザーページに移動右上の [アプリケーション設定の詳細] をクリックします。
コードをウェブアプリにコピーします。たとえば、次のようなものです。
Web バージョン 9
import { initializeApp } from "firebase/app"; const firebaseConfig = { apiKey: "...", // By default, authDomain is '[YOUR_APP].firebaseapp.com'. // You may replace it with a custom domain. authDomain: '[YOUR_CUSTOM_DOMAIN]' }; const firebaseApp = initializeApp(firebaseConfig);
Web バージョン 8
firebase.initializeApp({ apiKey: '...', // By default, authDomain is '[YOUR_APP].firebaseapp.com'. // You may replace it with a custom domain. authDomain: '[YOUR_CUSTOM_DOMAIN]' });
テナントでのログイン
テナントにログインするには、テナント ID を auth オブジェクトに渡す必要があります。tenantId はページの再読み込み時に保持されないことに注意してください。
Web バージョン 9
import { getAuth } from "firebase/auth"; const auth = getAuth(); const tenantId = "TENANT_ID1"; auth.tenantId = tenantId;
Web バージョン 8
const tenantId = "TENANT_ID1"; firebase.auth().tenantId = tenantId;
テナント ID を変更またはリセットするまで、この auth インスタンスからのすべてのログイン リクエストには、テナント ID(上記の例では TENANT_ID1)が含まれます。
単一または複数の auth インスタンスを使用して、複数のテナントを操作できます。
1 つの auth インスタンスを使用するには、テナント間の切り替え時にはいつでも tenantId プロパティを変更します。プロジェクト レベルの IdP に戻すには、tenantId を null に設定します。
Web バージョン 9
// One Auth instance // Switch to tenant1 auth.tenantId = "TENANT_ID1"; // Switch to tenant2 auth.tenantId = "TENANT_ID2"; // Switch back to project level IdPs auth.tenantId = null;
Web バージョン 8
// One Auth instance // Switch to tenant1 firebase.auth().tenantId = "TENANT_ID1"; // Switch to tenant2 firebase.auth().tenantId = "TENANT_ID2"; // Switch back to project level IdPs firebase.auth().tenantId = null;
複数のインスタンスを使用するには、テナントごとに新しい auth インスタンスを作成し、異なる ID にインスタンスを割り当てます。
Web バージョン 9
// Multiple Auth instances import { initializeApp } from "firebase/app"; import { getAuth } from "firebase/auth"; const firebaseApp1 = initializeApp(firebaseConfig1, 'app1_for_tenantId1'); const firebaseApp2 = initializeApp(firebaseConfig2, 'app2_for_tenantId2'); const auth1 = getAuth(firebaseApp1); const auth2 = getAuth(firebaseApp2); auth1.tenantId = "TENANT_ID1"; auth2.tenantId = "TENANT_ID2";