ログイン時にカスタム ドメインを表示する

このドキュメントでは、ユーザーがログイン時にドメインを確認するように、Identity Platform の認証ハンドラをカスタマイズする方法について説明します。

デフォルトの認証ハンドラについて

プロジェクトで Identity Platform を有効にすると、Firebase Hosting で動作する固有のサブドメインが自動的に作成されます。そのドメインの形式は https://[PROJECT-ID].firebaseapp.com です。デフォルトでは、Identity Platform はこのドメインを使用して、すべての OAuth、OIDC、SAML ログインのリダイレクトを処理します。

デフォルト ドメインの使用には、次のような利点があります。

  • 設定の容易さ

  • 同じ連携プロバイダでの複数のドメインの使用

  • 1 つのコールバック URL を異なるのサービスやドメイン間で共有

  • アプリごとに 1 つのコールバック URL のみをサポートするプロバイダとの連携

デフォルトのハンドラの欠点は、ログイン時に https://[PROJECT-ID].firebaseapp.com の URL を一時的にユーザーが確認できることです。

認証ハンドラのカスタマイズ

デフォルトのハンドラをオーバーライドして独自のハンドラを指定するには:

  1. プロジェクトをカスタム ドメインに接続します。Firebase コンソールを使用して、これらの手順を完了する必要があります。Google Cloud CLI または Google Cloud コンソールの使用はサポートされていません。

  2. Google Cloud コンソールで [ID プロバイダ] ページに移動し、SAML プロバイダを選択します。[ID プロバイダ] ページに移動

  3. [承認済みドメイン] のリストにカスタム ドメインを追加します。

  4. デフォルト ドメインの代わりにカスタム ドメインを使用するように、ID プロバイダでコールバック URL を更新します。たとえば、https://myproject.firebaseapp.com/__/auth/handlerhttps://auth.mycustomdomain.com/__/auth/handler に変更します。

  5. [保存] をクリックします。

クライアント SDK 構成の更新

ウェブ

通常は、Google Cloud コンソールからクライアント SDK の初期化コードをコピーできます。認証ハンドラをカスタマイズする場合は、authDomain フィールドをカスタム ドメインに更新する必要があります。

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]'
});

Android、iOS

認証ハンドラをカスタマイズするには、次のコードを使用します。

Java

FirebaseAuth.getInstance().setCustomAuthDomain("[YOUR_CUSTOM_DOMAIN]");

Kotlin+KTX

Firebase.auth.setCustomAuthDomain("[YOUR_CUSTOM_DOMAIN]")

Swift

let auth = Auth.auth()
auth.customAuthDomain = "[YOUR_CUSTOM_DOMAIN]"

Objective-C

FIRAuth *auth = [FIRAuth auth];
auth.customAuthDomain("[YOUR_CUSTOM_DOMAIN]");