次の方法で共有


テナント間同期を構成する

この記事では、Microsoft Entra 管理センターを利用してテナント間同期を構成する手順について説明します。 構成すると、Microsoft Entra ID では、ターゲット テナント内の B2B ユーザーが自動的にプロビジョニングおよびプロビジョニング解除されます。 このサービスが実行する内容、しくみ、よく寄せられる質問の重要な詳細については、「Microsoft Entra ID による SaaS アプリへのユーザー プロビジョニングとプロビジョニング解除の自動化」を参照してください。

ソース テナントとターゲット テナントの間のテナント間同期を示す図。

学習の目的

この記事を最後まで読むと、次のことができるようになります。

  • ターゲット テナントで B2B ユーザーを作成する
  • ターゲット テナントで B2B ユーザーを削除する
  • ソースとターゲットのテナント間でユーザー属性の同期を維持する

前提条件

ソース テナントのアイコン。
ソース テナント

ターゲット テナントのアイコン。
ターゲット テナント

手順 1:プロビジョニングのデプロイを計画する

  1. 組織内のテナントを構成する方法を定義します。

  2. プロビジョニング サービスのしくみを確認します。

  3. 誰がプロビジョニングの対象となるかを決定します。

  4. テナント間でマップするデータを決定します。

手順 2: ターゲット テナントでユーザーの同期を有効にする

ヒント

この記事の手順は、開始するポータルに応じて若干異なる場合があります。

ターゲット テナントのアイコン。
ターゲット テナント

  1. ターゲット テナントの Microsoft Entra 管理センターにサインインします。

  2. [ID][External Identities][テナント間アクセス設定] の順に移動します。

  3. [組織の設定] タブで、[組織の追加] を選びます。

  4. テナント ID またはドメイン名を入力して [追加] を選び、ソース テナントを追加します。

    ソース テナントを追加するための [組織の追加] ペインを示すスクリーンショット。

  5. 追加された組織の [Inbound access] (インバウンド アクセス) で、[既定値から継承] を選びます。

  6. [テナント間同期] タブを選びます。

  7. [ユーザーがこのテナントに同期することを許可する] チェックボックスを選択します。

    [テナント間同期] タブと [ユーザーがこのテナントに同期することを許可する] チェックボックスを示すスクリーンショット。

  8. [保存] を選択します。

  9. [テナント間同期と自動引き換えを有効にする] ダイアログ ボックスで自動引き換えを有効にするか問われた場合、[はい] を選択します。

    [はい] を選択すると、ターゲット テナントで招待が自動的に引き換えられます。

    ターゲット テナントで招待を自動的に引き換えるための [テナント間同期と自動引き換えを有効にする] ダイアログ ボックスを示すスクリーンショット。

手順 3: ターゲット テナントで招待を自動的に引き換える

ターゲット テナントのアイコン。
ターゲット テナント

このステップでは、ソース テナントのユーザーが同意プロンプトに同意する必要がないように、招待を自動的に引き換えます。 この設定は、ソース テナント (アウトバウンド) とターゲット テナント (インバウンド) の両方でオンにする必要があります。 詳しくは、「自動引き換えの設定」をご覧ください。

  1. ターゲット テナントの同じ [受信アクセスの設定] ページで、[信頼の設定] タブを選択します。

  2. [テナントで招待を自動的に引き換える]<テナント> チェックボックスにチェックを入れます。

    [テナント間同期と自動引き換えを有効にする] ダイアログ ボックスで以前に [はい] を選択した場合、このボックスにはすでにオンになっている可能性があります。

    [インバウンド自動引き換え] チェックボックスを示すスクリーンショット。

  3. [保存] を選択します。

手順 4: ソース テナントで招待を自動的に引き換える

ソース テナントのアイコン。
ソース テナント

このステップでは、ソース テナントで招待を自動的に引き換えます。

  1. ソース テナントの Microsoft Entra 管理センターにサインインします。

  2. [ID][External Identities][テナント間アクセス設定] の順に移動します。

  3. [組織の設定] タブで、[組織の追加] を選びます。

  4. テナント ID またはドメイン名を入力して [追加] を選び、ターゲット テナントを追加します。

    ターゲット テナントを追加するための [組織の追加] ペインを示すスクリーンショット。

  5. ターゲット組織の [Outbound access] (アウトバウンド アクセス) で、[既定値から継承] を選びます。

  6. [信頼の設定] タブを選択します。

  7. [テナントで招待を自動的に引き換える]<テナント> チェックボックスにチェックを入れます。

    [アウトバウンド自動引き換え] チェックボックスを示すスクリーンショット。

  8. [保存] を選択します。

手順 5: ソース テナントで構成を作成する

ソース テナントのアイコン。
ソース テナント

  1. ソース テナントで、[ID][External Identities][テナント間同期] の順に参照します。

    Microsoft Entra 管理センターでのテナント間同期の操作を示すスクリーンショット。

    Azure portal を使用している場合は、[Microsoft Entra ID]>[管理]>[テナント間同期] に移動します。

    Azure portal でのテナント間同期の操作を示すスクリーンショット。

  2. [構成] を選択します。

  3. ページの先頭にある [新しい構成] を選びます。

  4. 構成の名前を指定して、[作成] を選びます。

    作成した構成が一覧に表示されるまで、最大で 15 秒かかる場合があります。

手順 6: ターゲット テナントへの接続をテストする

ソース テナントのアイコン。
ソース テナント

  1. ソース テナントに新しい構成が表示されるはずです。 表示されない場合、構成リストで構成を選択します。

    テナント間同期の構成ページと新しい構成を示すスクリーンショット。

  2. [Get started](作業を開始する) を選択します。

  3. [プロビジョニング モード][自動] に設定します。

  4. [管理者資格情報] セクションで、[認証方法][Cross Tenant Synchronization Policy] (テナント間同期ポリシー) に変更します。

    [テナント間同期ポリシー] が選択された [プロビジョニング] ページを示すスクリーンショット。

  5. [テナント ID] ボックスに、ターゲット テナントのテナント ID を入力します。

  6. [テスト接続] を選んで接続をテストします。

    指定した資格情報でプロビジョニングを有効にすることが承認されたことを示すメッセージが表示されます。 テスト接続が失敗した場合は、この記事で後述する「トラブルシューティングのヒント」をご覧ください。

    テスト接続の通知を示すスクリーンショット。

  7. [保存] を選択します。

    [マッピング] と [設定] セクションが表示されます。

  8. [プロビジョニング] ページを閉じます。

手順 7: プロビジョニングの対象となるユーザーを定義する

ソース テナントのアイコン。
ソース テナント

Microsoft Entra プロビジョニング サービスを使うと、次のいずれかまたは両方の方法でプロビジョニングを行うユーザーを定義できます。

  • 構成への割り当てに基づく
  • ユーザーの属性に基づく

小さいところから始めましょう。 全員にロールアウトする前に、少数のユーザーでテストします。 プロビジョニングのスコープを割り当て済みのユーザーとグループに設定すると、構成に 1 人または 2 人のユーザーを割り当てることで、それを制御できます。 次のステップで説明する属性ベースのスコープ フィルターを作成することで、プロビジョニングの対象となるユーザーをさらに調整できます。

  1. ソース テナントで、[プロビジョニング] を選択し、[設定] セクションを展開します。

    [スコープ] と [プロビジョニング状態] オプションを含む [設定] セクションを示す [プロビジョニング] ページのスクリーンショット。

  2. [スコープ] の一覧で、ソース テナントのすべてのユーザーを同期するか、構成に割り当てられているユーザーのみを同期するかを選びます。

    [すべてのユーザーとグループを同期する] ではなく、[割り当てられたユーザーとグループのみを同期する] を選ぶことをお勧めします。 スコープ内のユーザーの数を減らすと、パフォーマンスが向上します。

  3. 変更した場合、[保存] を選択します。

  4. 構成ページで、[ユーザーとグループ] を選びます。

    テナント間同期が機能するには、少なくとも 1 人の内部ユーザーを構成に割り当てる必要があります。

  5. [Add user/group](ユーザーまたはグループの追加) を選択します。

  6. [割り当ての追加] ページで、[ユーザーとグループ] の下にある [選択されていません] を選びます。

  7. [ユーザーとグループ] ペインで、構成に割り当てる内部ユーザーまたはグループを 1 つ以上検索して選びます。

    グループを選んで構成に割り当てた場合、グループ内の直接メンバーであるユーザーのみがプロビジョニングの対象になります。 静的グループまたは動的グループを選択できます。 割り当ては、入れ子になったグループにはカスケードされません。

  8. [選択] を選択します。

  9. [割り当て] を選択します。

    ユーザーが構成に割り当てられている [ユーザーとグループ] ページを示すスクリーンショット。

    詳しくは、「アプリケーションにユーザーとグループを割り当てる」をご覧ください。

手順 8: (省略可能) スコープ フィルターを使用してプロビジョニングのスコープ内のユーザーを定義する

ソース テナントのアイコン。
ソース テナント

前のステップで [スコープ] に選んだ値に関係なく、属性ベースのスコープ フィルターを作ることで、同期されるユーザーをさらに制限できます。

  1. ソース テナントで、[プロビジョニング] を選択し、[マッピング] セクションを展開します。

    [マッピング] セクションが展開された [プロビジョニング] ページを示すスクリーンショット。

  2. [Microsoft Entra ID ユーザーのプロビジョニング] を選択し、属性マッピング ページを開きます。

  3. [ソース オブジェクト スコープ] で、[ すべてのレコード] を選びます。

    [ソース オブジェクト スコープ] を含む [属性マッピング] ページを示すスクリーンショット。

  4. [ソース オブジェクト スコープ] ページで、[スコープ フィルターの追加] を選びます。

  5. プロビジョニングのスコープ内のユーザーを定義するスコープ フィルターを追加します。

    スコープ フィルターの構成については、「スコープ フィルターを使用した属性ベースのアプリケーション プロビジョニング」の手順をご覧ください。

    サンプル フィルターを含む [スコープ フィルターの追加] ページを示すスクリーンショット。

  6. [OK][保存] を選んですべての変更を保存します。

    フィルターを追加した場合、変更を保存すると、割り当てられたすべてのユーザーとグループが再同期されることを示すメッセージが表示されます。 ディレクトリのサイズによっては、これに長い時間かかる場合があります。

  7. [はい] を選んで、[属性マッピング] ページを閉じます。

手順 9: 属性マッピングを確認する

ソース テナントのアイコン。
ソース テナント

属性マッピングを使うと、ソース テナントとターゲット テナントの間でデータが流れる方法を定義できます。 既定の属性マッピングをカスタマイズする方法については、「チュートリアル - Microsoft Entra ID の SaaS アプリケーションに対するユーザー プロビジョニング属性マッピングをカスタマイズする」を参照してください。

  1. ソース テナントで、[プロビジョニング] を選択し、[マッピング] セクションを展開します。

  2. [Microsoft Entra ID ユーザーのプロビジョニング] を選択します。

  3. [属性マッピング] ページを下にスクロールし、テナント間で同期されるユーザー属性を [属性マッピング] セクションで確認します。

    最初の属性 alternativeSecurityIdentifier は、テナント間でユーザーを一意に識別し、ソース テナント内のユーザーとターゲット テナント内の既存のユーザーを照合し、各ユーザーが 1 つのアカウントしか持たないようにするために使用される内部属性です。 一致する属性は変更できません。 一致属性の変更または一致属性の追加を試みると、schemaInvalid エラーが発生します。

    Microsoft Entra 属性の一覧を表示する [属性マッピング] ページのスクリーンショット。

  4. [メンバー (userType)] 属性を選択し、[属性の編集] ページを開きます。

  5. userType 属性の [定数値] の設定を確認します。

    この設定では、ターゲット テナントに作成されるユーザーの種類を定義し、次の表のいずれかの値を指定できます。 既定では、ユーザーは外部メンバー (B2B コラボレーション ユーザー) として作成されます。 詳細については、Microsoft Entra B2B コラボレーション ユーザーのプロパティに関するページをご覧ください。

    定数値 説明
    メンバー 既定値。 ユーザーは、外部メンバー (B2B コラボレーション ユーザー) としてターゲット テナントに作成されます。 ユーザーは、ターゲット テナントの任意の内部メンバーとして機能できます。
    ゲスト ユーザーは、外部ゲスト (B2B コラボレーション ユーザー) としてターゲット テナントに作成されます。

    Note

    B2B ユーザーがターゲット テナントに既に存在する場合、[このマッピンを適用する] 設定が [常に] に設定されていない限り、[Member (userType)][Member] に変更されません。

    選択したユーザーの種類には、アプリまたはサービスに対して次の制限があります (ただし、これらに限定されません)。

    アプリまたはサービス 制限事項
    Power BI - Power BI での UserType Member のサポートは現在プレビュー段階です。 詳細については、「Microsoft Entra B2B で外部ゲスト ユーザーに Power BI コンテンツを配布する」を参照してください。
    Azure Virtual Desktop - 外部メンバーと外部ゲストは、Azure Virtual Desktop ではサポートされていません。

    Member 属性を示す [属性の編集] ページのスクリーンショット。

  6. 変換を定義する場合は、[属性マッピング] ページで、変換する属性 (displayName など) を選びます。

  7. [マッピングの種類][式] に設定します。

  8. [式] ボックスに、変換式を入力します。 たとえば、表示名の場合は、次のようにできます。

    • 名と姓を入れ替えて、その間にコンマを追加します。
    • 表示名の最後に、かっこで囲んだドメイン名を追加します。

    例については、「Microsoft Entra ID で属性マッピングの式を記述するためのリファレンス」を参照してください。

    displayName 属性と [式] ボックスを示す [属性の編集] ページのスクリーンショット。

ヒント

テナント間同期のスキーマを更新することで、ディレクトリ拡張機能をマップできます。 詳細については、「テナント間同期でのディレクトリ拡張機能をマップする」を参照してください。

手順 10: 追加のプロビジョニング設定を指定する

ソース テナントのアイコン。
ソース テナント

  1. ソース テナントで、[プロビジョニング] を選択し、[設定] セクションを展開します。

    [スコープ] と [プロビジョニング状態] オプションを含む [設定] セクションを示す [プロビジョニング] ページのスクリーンショット。

  2. [エラー発生時にメール通知を送信する] チェックボックスを選択します。

  3. プロビジョニング エラー通知を受け取る必要があるユーザーまたはグループのメール アドレスを、[通知用メール] フィールドに入力します。

    ジョブが検疫状態になってから 24 時間以内に、メール通知が送信されます。 カスタム アラートについては、「プロビジョニングを Azure Monitor ログと統合する方法の概要」をご覧ください。

  4. 誤って削除されないようにするには、[誤削除を防止する] を選んで、しきい値を指定します。 既定では、しきい値は 500 に設定されます。

    詳細については、「Microsoft Entra プロビジョニング サービスで誤った削除の防止機能を有効にする」を参照してください。

  5. [保存] を選択してすべての変更を保存します。

手順 11: オンデマンドのプロビジョニングをテストする

ソース テナントのアイコン。
ソース テナント

構成が完了したので、いずれかのユーザーでオンデマンド プロビジョニングをテストできます。

  1. ソース テナントで、[ID][External Identities][テナント間同期] の順に参照します。

  2. [構成] を選んでから、構成を選びます。

  3. [Provision on demand] (オンデマンドでプロビジョニングする) を選択します。

  4. [ユーザーまたはグループを選択します] ボックスで、テスト ユーザーの 1 人を検索して選びます。

    テスト ユーザーが選ばれていることを示す [オンデマンドでプロビジョニング] ページのスクリーンショット。

  5. [プロビジョニング] を選びます。

    しばらくすると、ターゲット テナントでのテスト ユーザーのプロビジョニングに関する情報を含む [アクションの実行] ページが表示されます。

    テスト ユーザーと変更された属性の一覧を示す [アクションの実行] ページのスクリーンショット。

    ユーザーがスコープ内ではない場合は、テスト ユーザーがスキップされた理由に関する情報を含むページが表示されます。

    テスト ユーザーがスキップされた理由に関する情報を示す [ユーザーがスコープ内にあるかどうかを確認] ページのスクリーンショット。

    [オンデマンドでプロビジョニング] ページでは、プロビジョニングに関する詳細を表示し、再試行するオプションを選択できます。

    プロビジョニングに関する詳細を示す [オンデマンドでプロビジョニング] ページのスクリーンショット。

  6. ターゲット テナントで、テスト ユーザーがプロビジョニングされたことを確認します。

    プロビジョニングされたテスト ユーザーを示すターゲット テナントの [ユーザー] ページのスクリーンショット。

  7. すべてが期待どおりに動作している場合は、構成に追加のユーザーを割り当てます。

    詳細については、「Microsoft Entra ID でのオンデマンド プロビジョニング」を参照してください。

手順 12: プロビジョニング ジョブを開始する

ソース テナントのアイコン。
ソース テナント

プロビジョニング ジョブによって、[設定] セクションの [スコープ] で定義したすべてのユーザーの初期同期サイクルが開始されます。 初期サイクルは後続の同期よりも実行に時間がかかります。後続のサイクルは、Microsoft Entra のプロビジョニング サービスが実行されている限り約 40 分ごとに実行されます。

  1. ソース テナントで、[ID][External Identities][テナント間同期] の順に参照します。

  2. [構成] を選んでから、構成を選びます。

  3. [概要] ページで、プロビジョニングの詳細を確認します。

    プロビジョニングの詳細の一覧が表示される [構成の概要] ページのスクリーンショット。

  4. [プロビジョニングの開始] を選んで、プロビジョニング ジョブを始めます。

手順 13: プロビジョニングを監視する

ソース テナントのアイコン。 ターゲット テナントのアイコン。
ソースとターゲット テナント

プロビジョニング ジョブを開始したら、状態を監視できます。

  1. ソース テナントの [概要] ページで進行状況バーをチェックし、プロビジョニング サイクルの状態と完了までの時間を確認します。 詳細については、「ユーザー プロビジョニングの状態を確認する」を参照してください。

    プロビジョニングが異常な状態になったように見える場合、構成は検疫されます。 詳細については、「検疫状態のアプリケーションのプロビジョニング」を参照してください。

    プロビジョニング サイクルの状態を示す [構成の概要] ページのスクリーンショット。

  2. プロビジョニングが成功したユーザーと失敗したユーザーを確認するには、[プロビジョニング ログ] を選びます。 既定では、ログは構成のサービス プリンシパル ID でフィルター処理されます。 詳細については、「Microsoft Entra ID のプロビジョニング ログ」を参照してください。

    ログ エントリとその状態の一覧が表示される [プロビジョニング ログ] ページのスクリーンショット。

  3. Microsoft Entra ID でログに記録されたすべてのイベントを表示するには、[監査ログ] を選びます。 詳細については、Microsoft Entra ID の監査ログに関する記事を参照してください。

    ログ エントリとその状態の一覧が表示される [監査ログ] ページのスクリーンショット。

    ターゲット テナントでの監査ログを見ることもできます。

  4. ターゲット テナントで、[ユーザー]>[監査ログ] を選んで、ユーザー管理に関するログされたイベントを表示します。

    ユーザー管理に関するログ エントリの一覧が表示されるターゲット テナントの [監査ログ] ページのスクリーンショット。

手順 14: 脱退の設定を構成する

ターゲット テナントのアイコン。
ターゲット テナント

ユーザーがターゲット テナントでプロビジョニングされている場合でも、ユーザーは自分自身を削除できる可能性があります。 自分自身を削除したユーザーがスコープ内にいる場合、そのユーザーは次のプロビジョニング サイクル中に再びプロビジョニングされます。 ユーザーが組織から自分自身を削除できないようにする場合は、[外部ユーザーの脱退設定] を構成する必要があります。

  1. ターゲット テナントで、[ID][External Identities][外部コラボレーション設定] の順に選択します。

  2. [外部ユーザーの脱退設定] で、外部ユーザーが組織を脱退することを許可するかどうかを選びます。

この設定は B2B コラボレーションと B2B 直接接続にも適用されるため、[外部ユーザーの脱退設定][いいえ] に設定した場合、B2B コラボレーション ユーザーと B2B 直接接続ユーザーは自分で組織を離れることはできません。 詳しくは、「外部ユーザーとして組織を脱退する」をご覧ください。

トラブルシューティングのヒント

構成を削除する

[構成] ページで構成を削除するには、こちらの手順に従います。

  1. ソース テナントで、[ID][External Identities][テナント間同期] の順に参照します。

  2. [構成] ページで、削除する構成の横にチェックマークを付けます。

  3. [削除][OK] の順に選択して、構成を削除します。

    構成の削除方法を示した [構成] ページのスクリーンショット。

一般的なシナリオとソリューション

現象 - AzureDirectoryB2BManagementPolicyCheckFailure でテスト接続が失敗する

ソース テナントでテナント間同期を構成して接続をテストすると、次のエラー メッセージで失敗します。

You appear to have entered invalid credentials. Please confirm you are using the correct information for an administrative account.
Error code: AzureDirectoryB2BManagementPolicyCheckFailure
Details: Policy permitting auto-redemption of invitations not configured.

AzureDirectoryB2BManagementPolicyCheckFailure でテスト接続が失敗したときのエラーを示すスクリーンショット。

原因

このエラーは、ソース テナントとターゲット テナントの両方で招待を自動的に引き換えるポリシーが設定されなかったことを示します。

ソリューション

手順 3: ターゲット テナントで招待を自動的に引き換える」と「手順 4: ソース テナントで招待を自動的に引き換える」で示されている手順のようにします。

現象 - [自動引き換え] チェックボックスが無効になっている

テナント間同期の構成時に、[自動引き換え] チェックボックスが無効になっています。

無効になっている [自動引き換え] チェックボックスを示すスクリーンショット。

原因

お使いのテナントに Microsoft Entra ID P1 または P2 ライセンスがありません。

解決方法

信頼設定を構成するには、Microsoft Entra ID P1 または P2 が必要です。

現象 - ターゲット テナントで最近削除されたユーザーが復元されない

ターゲット テナントで同期されているユーザーを論理的に削除した後、次の同期サイクルの間は、そのユーザーは復元されません。 オンデマンド プロビジョニングを使用してユーザーを論理的に削除した後、そのユーザーを復元しようとすると、ユーザーが重複する可能性があります。

原因

以前にターゲット テナントで論理的に削除されたユーザーの復元は、サポートされていません。

ソリューション

ターゲット テナントで論理的に削除されたユーザーは、手動で復元してください。 詳細については、「Microsoft Entra ID を使用して最近削除されたユーザーを復元または削除する」を参照してください。

現象 - ユーザーに対して SMS サインインが有効になっているため、ユーザーはスキップされます

ユーザーは同期からスキップされます。 スコープステップには、状態が false の以下のフィルターが含まれています:「Filter external users.alternativeSecurityIds EQUALS 'None'」

原因

ユーザーに対して SMS サインインが有効になっている場合、プロビジョニング サービスによってスキップされます。

ソリューション

ユーザーの SMS サインインを無効にします。 次のスクリプトは、PowerShell を使用して SMS サインインを無効にする方法を示しています。

##### Disable SMS Sign-in options for the users

#### Import module
Install-Module Microsoft.Graph.Users.Actions
Install-Module Microsoft.Graph.Identity.SignIns
Import-Module Microsoft.Graph.Users.Actions

Connect-MgGraph -Scopes "User.Read.All", "Group.ReadWrite.All", "UserAuthenticationMethod.Read.All","UserAuthenticationMethod.ReadWrite","UserAuthenticationMethod.ReadWrite.All"

##### The value for phoneAuthenticationMethodId is 3179e48a-750b-4051-897c-87b9720928f7

$phoneAuthenticationMethodId = "3179e48a-750b-4051-897c-87b9720928f7"

#### Get the User Details

$userId = "objectid_of_the_user_in_Entra_ID"

#### validate the value for SmsSignInState

$smssignin = Get-MgUserAuthenticationPhoneMethod -UserId $userId


    if($smssignin.SmsSignInState -eq "ready"){   
      #### Disable Sms Sign-In for the user is set to ready

      Disable-MgUserAuthenticationPhoneMethodSmsSignIn -UserId $userId -PhoneAuthenticationMethodId $phoneAuthenticationMethodId
      Write-Host "SMS sign-in disabled for the user" -ForegroundColor Green
    }
    else{
    Write-Host "SMS sign-in status not set or found for the user " -ForegroundColor Yellow
    }



##### End the script

現象 - "AzureActiveDirectoryForbidden" エラーでユーザーがプロビジョニングに失敗する

スコープ内のユーザーがプロビジョニングに失敗します。 プロビジョニング ログの詳細には、次のエラー メッセージが含まれます。

Guest invitations not allowed for your company. Contact your company administrator for more details.

原因

このエラーは、ターゲット テナントのゲスト招待設定が最も制限の厳しい設定 "管理者を含む組織内のすべてのユーザーがゲスト ユーザーを招待できない (最も制限的)" で構成されていることを示します。

解決方法

ターゲット テナントのゲスト招待設定を、制限の緩い設定に変更します。 詳細については、外部コラボレーション設定の構成を参照してください。

現象 - 承認待ち状態の既存の B2B ユーザーのユーザー プリンシパル名が更新されない

ユーザーが手動の B2B 招待を通じて初めて招待されると、招待はソース ユーザーのメール アドレスに送信されます。 その結果、ターゲット テナント内のゲスト ユーザーは、ソース メール値プロパティを使用するユーザー プリンシパル名 (UPN) プレフィックスを使用して作成されます。 環境によっては、ソース ユーザー オブジェクトのプロパティである UPN とメールの値が異なる場合があります (たとえば Mail == user.mail@domain.com と UPN == user.upn@otherdomain.com)。 この場合、ターゲット テナントのゲスト ユーザーは、UPN を user.mail_domain.com#EXT#@contoso.onmicrosoft.com として作成されます。

この問題は、ソース オブジェクトがテナント間同期のスコープ内に置かれ、他のプロパティに加えて、ターゲット ゲスト ユーザーの UPN プレフィックスがソース ユーザーの UPN と一致するように更新されることが想定されるときに発生します (上記の例を使うと、値は user.upn_otherdomain.com#EXT#@contoso.onmicrosoft.com になります)。 ただし、増分同期サイクル中にはこのようなことは起こらず、変更は無視されます。

原因

この問題は、ターゲット テナントに手動で招待された B2B ユーザーが招待を承諾または引き換えを行わなかった場合に発生するため、その状態は承認待ちです。 ユーザーがメールを通じて招待されると、メールから設定された一連の属性を使ってオブジェクトが作成されます。そのうちの 1 つは、ソース ユーザーのメール値を指す UPN です。 後でテナント間同期のスコープにユーザーを追加することにした場合、システムは alternativeSecurityIdentifier 属性に基づいて、ソース ユーザーをターゲット テナント内の B2B ユーザーに参加させようとしますが、招待が引き換えられていないため、以前に作成されたユーザーは alternativeSecurityIdentifier プロパティを持っていません。 そのため、システムはこれを新しいユーザー オブジェクトとは見なさず、UPN 値を更新しません。 次のシナリオでは、ユーザー プリンシパル名は更新されません。

  1. 手動で招待されたときのユーザーの UPN とメールが異なる。
  2. ユーザーが、テナント間同期を有効にする前に招待された。
  3. ユーザーが招待を受け入れなかったため、"承認待ち状態" になっている。
  4. ユーザーがテナント間同期のスコープに組み込まれる。

ソリューション

この問題を解決するには、影響を受けるユーザーに対してオンデマンド プロビジョニングを実行して UPN を更新します。 プロビジョニングを再起動して、すべての影響を受けるユーザーの UPN を更新することもできます。 これにより初期サイクルがトリガーされ、大規模なテナントでは長い時間がかかる可能性があることに注意してください。 承認待ち状態にある手動で招待されたユーザーの一覧を取得するには、スクリプトを使用できます。次のサンプルを参照してください。

Connect-MgGraph -Scopes "User.Read.All"
$users = Get-MgUser -Filter "userType eq 'Guest' and externalUserState eq 'PendingAcceptance'" 
$users | Select-Object DisplayName, UserPrincipalName | Export-Csv "C:\Temp\GuestUsersPending.csv"

これで、ユーザーごとに PowerShell で provisionOnDemand を使用できるようになります。 この API のレート制限は 10 秒あたり 5 要求です。 詳細については、「オンデマンド プロビジョニングの既知の制限事項」を参照してください。

次のステップ