重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
別の ID プロバイダーから Azure Active Directory B2C (Azure AD B2C) に移行するには、既存のユーザー アカウントの移行も必要になる場合があります。 ここでは、移行前とシームレスな移行という 2 つの移行方法について説明します。 どちらの方法でも、 Microsoft Graph API を使用して Azure AD B2C でユーザー アカウントを作成するアプリケーションまたはスクリプトを記述する必要があります。
このビデオでは、Azure AD B2C のユーザー移行戦略と考慮すべき手順について説明します。
注
移行を開始する前に、Azure AD B2C テナントの未使用のクォータが、移行する予定のすべてのユーザーに対応できることを確認します。 テナントの使用状況を取得する方法について説明します。 テナントのクォータ制限を引き上げる必要がある場合は、 Microsoft サポートにお問い合わせください。
移行前
移行前フローでは、移行アプリケーションはユーザー アカウントごとに次の手順を実行します。
- 現在の資格情報 (ユーザー名とパスワード) を含む、古い ID プロバイダーからユーザー アカウントを読み取ります。
- 現在の資格情報を使用して、Azure AD B2C ディレクトリに対応するアカウントを作成します。
次の 2 つの状況のいずれかで、移行前フローを使用します。
- ユーザーのプレーンテキスト資格情報 (ユーザー名とパスワード) にアクセスできます。
- 資格情報は暗号化されますが、暗号化を解除することはできます。
プログラムによるユーザー アカウントの作成の詳細については、「Microsoft Graph を使用した Azure AD B2C ユーザー アカウントの管理」を参照してください。
シームレスな移行
以前の ID プロバイダーのプレーンテキスト パスワードにアクセスできない場合は、シームレス移行フローを使用します。 たとえば、次の場合です。
- パスワードは、ハッシュ関数など、一方向の暗号化された形式で格納されます。
- パスワードは、アクセスできない方法でレガシ ID プロバイダーによって格納されます。 たとえば、ID プロバイダーが Web サービスを呼び出して資格情報を検証する場合などです。
シームレスな移行フローでは、引き続きユーザー アカウントの事前移行が必要ですが、カスタム ポリシー を使用して REST API (作成した API) に対してクエリを実行し、最初のサインイン時に各ユーザーのパスワードを設定します。
シームレスな移行フローは、 移行前 と 資格情報の設定という 2 つのフェーズで構成されます。
フェーズ 1: 移行前
- 移行アプリケーションは、古い ID プロバイダーからユーザー アカウントを読み取ります。
- 移行アプリケーションは、Azure AD B2C ディレクトリに対応するユーザー アカウントを作成しますが、 生成するランダム なパスワードを設定 します。
フェーズ 2: 資格情報を設定する
アカウントの事前移行が完了すると、カスタム ポリシーと REST API は、ユーザーがサインインしたときに次の操作を実行します。
- 入力したメール アドレスに対応する Azure AD B2C ユーザー アカウントを読み取る。
- ブール拡張属性を評価して、アカウントに移行のフラグが設定されているかどうかを確認します。
- 拡張機能属性が
True
を返す場合は、REST API を呼び出して、レガシ ID プロバイダーに対してパスワードを検証します。- REST API でパスワードが正しくないと判断された場合は、わかりやすいエラーをユーザーに返します。
- REST API でパスワードが正しいと判断された場合は、Azure AD B2C アカウントにパスワードを書き込み、ブール拡張属性を
False
に変更します。
- ブール拡張属性が
False
を返す場合は、通常どおりサインイン プロセスを続行します。
- 拡張機能属性が
カスタム ポリシーと REST API の例については、GitHub の シームレスなユーザー移行サンプル を参照してください。
安全
シームレスな移行アプローチでは、独自のカスタム REST API を使用して、レガシ ID プロバイダーに対してユーザーの資格情報を検証します。
REST API をブルート フォース攻撃から保護する必要があります。 攻撃者は、最終的にユーザーの資格情報を推測することを期待して、複数のパスワードを送信できます。 このような攻撃を阻止するには、サインイン試行回数が特定のしきい値を超えたときに、REST API への要求の提供を停止します。 また、Azure AD B2C と REST API の間の通信をセキュリティで保護します。 運用環境で RESTful API をセキュリティで保護する方法については、 RESTful API のセキュリティ保護に関するページを参照してください。
ユーザー属性
レガシ ID プロバイダー内のすべての情報を Azure AD B2C ディレクトリに移行する必要はありません。 移行する前に、Azure AD B2C に格納する適切なユーザー属性のセットを特定します。
-
Azure AD B2C に格納するもの:
- ユーザー名、パスワード、メール アドレス、電話番号、メンバーシップ番号/識別子。
- プライバシー ポリシーとエンドユーザーライセンス契約の同意マーカー。
- Azure AD B2C に格納しないでください。
- クレジット カード番号、社会保障番号 (SSN)、医療記録、または政府または業界のコンプライアンス機関によって規制されているその他のデータなどの機密データ。
- マーケティングまたはコミュニケーションの好み、ユーザーの行動、分析情報。
ディレクトリのクリーンアップ
移行プロセスを開始する前に、ディレクトリをクリーンアップする機会を利用してください。
- Azure AD B2C に格納するユーザー属性のセットを特定し、必要なものだけを移行します。 必要に応じて、ユーザーに関するより多くのデータを格納する カスタム属性 を作成できます。
- 複数の認証ソースを持つ環境から移行する場合 (たとえば、各アプリケーションに独自のユーザー ディレクトリがある場合)、Azure AD B2C の統合アカウントに移行します。
- 複数のアプリケーションのユーザー名が異なる場合は、ID コレクションを使用して、それらのすべてを Azure AD B2C ユーザー アカウントに格納できます。 パスワードについて、ユーザーがパスワードを選択し、ディレクトリに設定できるようにします。 たとえば、シームレスな移行では、選択したパスワードのみを Azure AD B2C アカウントに格納する必要があります。
- 未使用のユーザー アカウントを削除するか、古いアカウントを移行しないでください。
パスワード ポリシー
移行するアカウントのパスワード強度が、Azure AD B2C によって適用される 強力なパスワード強度 よりも弱い場合は、強力なパスワード要件を無効にすることができます。 詳細については、「 パスワード ポリシーのプロパティ」を参照してください。
次のステップ
GitHub の azure-ad-b2c/user-migration
リポジトリには、シームレスな移行カスタム ポリシーの例と REST API コード サンプルが含まれています。