このガイドでは、Azure AD B2C を含む現在の ID プロバイダーから Microsoft Entra External ID にユーザーと資格情報を移行する方法の基礎について説明します。 このガイドでは、現在の構成に応じて使用できるさまざまなソリューションについて説明します。 これらの各方法では、 Microsoft Graph API を使用して外部 ID でユーザー アカウントを作成するアプリケーションまたはスクリプトを記述する必要があります。
Von Bedeutung
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ で Azure AD B2C を引き続き購入できますか ? を参照してください。
前提条件
外部 ID へのユーザーの移行を開始する前に、次のものが必要です。
- 外部テナント。 作成するには、次の方法から選択します。
- Microsoft Entra 外部 ID 拡張機能を使用して、Visual Studio Code で外部テナントを直接設定します。
- Microsoft Entra 管理センターで新しい外部テナント を作成します。
準備: ディレクトリのクリーンアップ
ユーザー移行プロセスを開始する前に、レガシ ID プロバイダー ディレクトリのデータをクリーンアップする時間を取る必要があります。 これにより、必要なデータのみを移行し、移行プロセスをスムーズに行うことができます。
- 外部 ID に格納するユーザー属性のセットを特定し、必要なものだけを移行します。 必要に応じて、外部 ID 内 にカスタム属性を作成 して、ユーザーに関するより多くのデータを格納できます。
- 複数の認証ソースを持つ環境から移行する場合 (たとえば、各アプリケーションに独自のユーザー ディレクトリがある場合)、外部 ID の統合アカウントに移行します。 異なるソースから同じユーザーのアカウントをマージおよび調整するには、独自のビジネス ロジックを適用することが必要な場合があります。
- ユーザー名は、外部のアカウントごとに一意である必要があります。 複数のアプリケーションで異なるユーザー名を使用する場合は、独自のビジネス ロジックを適用して、アカウントを調整およびマージする必要があります。 パスワードについては、ユーザーがパスワードを選択し、ディレクトリに設定します。 選択したパスワードのみを外部 ID アカウントに格納する必要があります。
- 未使用のユーザー アカウントを削除するか、古いアカウントを移行しないでください。
ステージ 1: ユーザー データの移行
移行プロセスの最初の手順は、ユーザー データをレガシ ID プロバイダーから外部 ID に移行することです。 これには、ユーザー名とその他の関連する属性が含まれます。 これを行うには、次の操作を行う必要があります。
- レガシ ID プロバイダーからユーザー アカウントを読み取ります。
- 外部 ID ディレクトリに対応するユーザー アカウントを作成します。 プログラムによってユーザー アカウントを作成する方法については、「Microsoft Graph を使用した コンシューマー ユーザー アカウントの管理」を参照してください。
- ユーザーのプレーンテキスト パスワードにアクセスできる場合は、ユーザー データを移行するときに、新しいアカウントに直接設定できます。 プレーンテキスト パスワードにアクセスできない場合は、パスワード移行プロセスの一環として後で更新されるランダムなパスワードを設定する必要があります。
レガシ ID プロバイダーのすべての情報を外部 ID ディレクトリに移行する必要はありません。 次の推奨事項は、外部 ID に格納するユーザー属性の適切なセットを決定するのに役立ちます。
外部 ID に DO を格納する。
- ユーザー名、パスワード、メール アドレス、電話番号、メンバーシップ番号/識別子。
- プライバシー ポリシーとエンドユーザーライセンス契約の同意マーカー。
外部 ID には格納しないでください。
- クレジット カード番号、社会保障番号 (SSN)、医療記録、または政府または業界のコンプライアンス機関によって規制されているその他のデータなどの機密データ。
- マーケティングまたはコミュニケーションの好み、ユーザーの行動、分析情報。
ステージ 2: パスワードの移行
ユーザー データを移行したら、ユーザー パスワードをレガシ ID プロバイダーから外部 ID に移行する必要があります。 ユーザー パスワードの移行には、セルフサービス パスワード リセット (SSPR) とシームレス移行の 2 つの推奨される方法があります。 プレーンテキスト ユーザー パスワードにアクセスできない場合は、次のいずれかの方法を使用する必要があります。 たとえば、次の場合です。
- パスワードは Azure AD B2C に格納されます。
- パスワードは、ハッシュ関数など、一方向の暗号化された形式で格納されます。
- パスワードは、アクセスできない方法でレガシ ID プロバイダーによって格納されます。 たとえば、ID プロバイダーが Web サービスを呼び出して資格情報を検証する場合などです。
セルフサービス パスワード リセット (SSPR)
外部 ID のセルフサービス パスワード リセット (SSPR) 機能を使用すると、新しいシステムに初めてログインする際にパスワードを手動で設定できます。 この方法は簡単に実装でき、カスタム コードは必要ありません。 ただし、ユーザーはパスワードを手動でリセットする必要があるため、一部のユーザーにとっては不便な場合があります。
この方法を使用するには、まず外部 ID テナントで SSPR を設定し、パスワード リセット ポリシーを構成する必要があります。 その後、ユーザーが初めてログインするときに、SSPR を使用してパスワードをリセットする方法の手順をユーザーに提供する必要があります。 たとえば、ユーザーがサインイン フローに移動する前に、パスワードをリセットする方法やアプリに手順を追加する手順を含む電子メールをユーザーに送信できます。
シームレスな移行
多数のユーザーがいる場合、またはよりシームレスなエクスペリエンスを提供する場合は、シームレスな移行アプローチを使用できます。 このプロセスにより、ユーザーはアカウントを外部 ID に移行しながら、既存のパスワードを引き続き使用できます。 これを行うには、ユーザーが入力した資格情報をレガシ ID プロバイダーに対して検証するカスタム REST API を構築する必要があります。
シームレスな移行プロセスは、次の手順で構成されます。
- 移行状態にフラグを設定する拡張機能属性をユーザー アカウントに追加します。
- 顧客がサインインしたら、入力したメール アドレスに対応する外部 ID ユーザー アカウントを読み取る。
- 顧客のアカウントに移行済みのフラグが既に設定されている場合は、サインイン プロセスに進みます。
- ユーザーのアカウントに既に移行済みのフラグが設定されていない場合は、レガシ ID プロバイダーに対して入力されたパスワードを検証します。
- 従来の IdP がパスワードが正しくないと判断した場合は、わかりやすいエラーをユーザーに返します。
- 従来の IdP がパスワードが正しいと判断した場合は、REST API を使用して外部 ID アカウントにパスワードを書き込み、拡張機能属性を変更してアカウントを移行済みとしてマークします。
シームレスな移行は、2 つのフェーズで行われます。 まず、レガシ資格情報が収集され、外部 ID に格納されます。 その後、十分な数のユーザーに対して資格情報が更新されると、アプリケーションを移行して外部 ID で直接認証できます。 この時点で、移行されたユーザーは既存の資格情報を引き続き使用できます。 移行されていないユーザーは、初めてログインするときにパスワードをリセットする必要があります。
シームレスな移行プロセスの大まかな設計を次の図に示します。
レガシ ID プロバイダーから資格情報を取得し、外部 ID で対応するアカウントを更新します。
資格情報の収集を停止し、外部 ID で認証するアプリケーションを移行します。 レガシ ID プロバイダーの使用を停止します。
注
このアプローチを使用している場合は、REST API をブルート フォース攻撃から保護することが重要です。 攻撃者は、最終的にユーザーの資格情報を推測することを期待して、複数のパスワードを送信できます。 このような攻撃を阻止するには、サインイン試行回数が特定のしきい値を超えたときに、REST API への要求の提供を停止します。
関連コンテンツ
- Azure AD B2C から移行する場合、GitHub の シームレスなユーザー移行サンプル リポジトリには、シームレス移行カスタム ポリシーの例と REST API コード サンプルが含まれています。
- カスタム認証拡張機能の詳細を確認します。