マルチテナンシーを使用した認証

このドキュメントでは、マルチテナント Identity Platform 環境でユーザーを認証する方法を説明します。

始める前に

プロジェクトでマルチテナンシーを有効にして、テナントを構成していることを確認してください。その方法については、マルチテナンシーのスタートガイドをご覧ください。

また、Client SDK をアプリに追加する必要もあります。

  1. コンソールで Identity Platform ページに移動します。 Google Cloud
    Identity Platform ユーザーページに移動

  2. 右上の [アプリケーション設定の詳細] をクリックします。

  3. コードをウェブアプリにコピーします。たとえば、次のようなものです。

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 に戻すには、tenantIdnull に設定します。

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";