メインコンテンツへスキップ
Delegated Administration 拡張機能で 複数のカスタムドメイン を使用する場合、Custom Domain Hook を使用して、ユーザーの作成、パスワードのリセット、メールアドレスの確認、ユーザーのブロックなどのユーザー操作にどのカスタムドメインを使用するかを指定できます。

Hook コントラクト

  • ctx: 現在のリクエストに関する情報を含むコンテキストオブジェクト。
    • method: 実行される操作 (例: createreset_passwordverify_emailblock_user) 。
    • payload: 操作に関連するペイロード (create メソッドの場合は、メールアドレスなどのユーザー情報を含みます) 。
    • request: リクエストに関する情報を含みます。
      • originalUser: 操作対象のユーザー (create 以外のメソッドの場合) 。
  • callback(error, result): カスタムドメイン設定を返す callback 関数。
    • error: 問題が発生した場合はエラーオブジェクト、それ以外の場合は null
    • result: カスタムドメインの動作を指定するオブジェクト:
      • customDomain (string): 使用するカスタムドメイン (例: 'customone.example.com') 。
      • useCanonicalDomain (boolean): カスタムドメインの代わりにテナントの正規ドメインを使用するには、true に設定します。
      • テナントのデフォルトドメインに委ねるには、空のオブジェクト {} を返します。

サポートされているメソッド

Custom Domain Hook は、次のユーザー操作で呼び出されます。
  • create: 新しいユーザーを作成するとき
  • reset_password: パスワードリセットメールを送信するとき
  • verify_email: メールアドレス確認リンクを送信するとき
  • block_user: ユーザーをブロックするとき

使用例

この例では、メールアドレスのドメインが異なるユーザーを、それぞれ別のカスタムドメインに振り分けます。企業ドメインのユーザーは正規のテナントドメインを使用し、それ以外のすべてのユーザーはテナントのデフォルトドメインを使用します。
function(ctx, callback) {
  // メールアドレスのドメインをカスタムドメインにマッピング
  const emailToDomain = {
    'customone.com': 'customone.example.com',
    'customtwo.com': 'customtwo.example.com',
  };

  // メールアドレスからカスタムドメインを取得するヘルパー関数
  function getDomainFromEmail(userEmail) {
    if (!userEmail) return null;
    const domain = userEmail.split('@')[1];
    return emailToDomain[domain];
  }

  // 正規ドメインを使用するかどうかを判定するヘルパー関数
  function shouldUseCanonical(userEmail) {
    if (!userEmail) return false;
    const domain = userEmail.split('@')[1];
    return domain === 'corp.com';
  }

  // 操作の種類に応じてユーザーのメールアドレスを取得
  let userEmail;
  if (ctx.method === 'create') {
    // 作成操作の場合、メールアドレスはペイロードに含まれる
    userEmail = ctx.payload.email;
  } else {
    // その他の操作の場合、元のユーザーからメールアドレスを取得
    userEmail = ctx.request.originalUser.email;
  }

  const customDomain = getDomainFromEmail(userEmail);

  // オプション1: 特定のカスタムドメインを使用
  if (customDomain) {
    return callback(null, {
      customDomain: customDomain
    });
  }

  // オプション2: 正規のテナントドメインを使用
  if (shouldUseCanonical(userEmail)) {
    return callback(null, {
      useCanonicalDomain: true
    });
  }

  // オプション3: テナントのデフォルトドメインを使用(設定されている場合)
  // 空のオブジェクトを返してデフォルトドメインに委譲
  return callback(null, {});
}

注記

  • この Hook が設定されていない場合、Delegated Administration 拡張機能は、テナントにデフォルトのカスタムドメインが設定されていればそれを使用し、設定されていない場合は正規ドメインを使用します。
  • 返されるカスタムドメインは、テナントに設定されている検証済みのカスタムドメインである必要があります。無効なドメインまたは未検証のドメインを指定すると、処理は失敗します。
  • useCanonicalDomain: true を使用すると、メールアドレスとリンクには Auth0 テナントの正規ドメイン (例: YOUR_TENANT.auth0.com または YOUR_TENANT.REGION.auth0.com) が使用されます。
  • 空のオブジェクト {} を返すと、どのドメインを使用するかはテナントのデフォルトのカスタムドメインの設定に委ねられます。

詳細情報