Azure Active Directory B2C でパスワードの強制リセット フローを設定する

"開始する前に"、[ポリシーの種類の選択] セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。

概要

管理者は、ユーザーが自分のパスワードを忘れた場合に、ユーザーのパスワードをリセットできます。 または、パスワードを強制的にリセットさせたいと考えています。 この記事では、こうしたシナリオでパスワードを強制的にリセットする方法について説明します。

管理者が Azure portal を使用してユーザーのパスワードをリセットすると、forceChangePasswordNextSignIn 属性の値が true に設定されます。 サインインとサインアップの過程で、この属性の値がチェックされます。 ユーザーがサインインを完了した後、属性が true に設定されている場合、ユーザーはパスワードをリセットする必要があります。 その後、この属性の値は false に戻ります。

Force password reset flow

パスワードのリセット フローは、パスワードが含まれる電子メール アドレスユーザー名を使ってサインインを行う Azure AD B2C のローカル アカウントに適用されます。

前提条件

ユーザー フローを構成する

サインアップまたはサインイン ユーザー フローでパスワードの強制リセット設定を有効にするには、次の操作を行います。

  1. Azure portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure portal で、 [Azure AD B2C] を検索して選択します。
  4. [ユーザー フロー] を選択します。
  5. カスタマイズする ( [推奨] タイプの) サインアップおよびサインイン、またはサインイン ユーザー フロー を選択します。
  6. 左側のメニューの [設定] で、 [プロパティ] を選択します。
  7. [Password configuration](パスワードの構成) で、 [パスワードの強制リセット] を選択します。
  8. [保存] を選択します。

ユーザー フローをテストする

  1. Azure portal にユーザー管理者またはパスワード管理者としてサインインします。 使用可能なロールについて詳しくは、Microsoft Entra ID での管理者ロールの割り当てに関するページを参照してください。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure portal で、 [Azure AD B2C] を検索して選択します。
  4. [ユーザー] を選択します。 パスワードのリセットをテストするために使用するユーザーを検索して選択した後、 [パスワードのリセット] を選択します。
  5. Azure portal で、 [Azure AD B2C] を検索して選択します。
  6. [ユーザー フロー] を選択します。
  7. テストする ( [推奨] タイプの) サインアップまたはサインイン ユーザー フローを選択します。
  8. [ユーザー フローを実行します] を選択します。
  9. [アプリケーション] で、以前に登録した webapp1 という名前の Web アプリケーションを選択します。 [応答 URL]https://jwt.ms と表示されます。
  10. [ユーザー フローを実行します] を選択します。
  11. パスワードをリセットしたユーザー アカウントでサインインします。
  12. ここで、ユーザーのパスワードを変更する必要があります。 パスワードを変更し、 [続行] を選択します。 トークンが https://jwt.ms に返され、表示されます。

カスタム ポリシーを構成する

GitHubでのパスワードリセットポリシーの強制の例を取得します。 各ファイル内で、文字列 yourtenant を、使用している Azure AD B2C テナントの名前に置き換えます。 たとえば、B2C テナントの名前が contosob2c であれば、yourtenant.onmicrosoft.com のすべてのインスタンスは contosob2c.onmicrosoft.com になります。

ポリシーをアップロードしてテストします。

  1. Azure portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure portal の左上隅にある [すべてのサービス] を選択してから、 [Azure AD B2C] を検索して選択します。
  4. [Identity Experience Framework] を選択します。
  5. [カスタム ポリシー] で、 [ポリシーのアップロード] 選択します。
  6. TrustFrameworkExtensionsCustomForcePasswordReset.xmlファイルを選択します。
  7. [アップロード] を選択します。
  8. 証明書利用者ファイル TrustFrameworkExtensionsCustomForcePasswordReset.xmlについて、手順 6 〜 8 を繰り返します。

ポリシーを実行する

  1. B2C_1A_TrustFrameworkExtensions_custom_ForcePasswordResetアップロードしたポリシーを開きます。
  2. [アプリケーション] で、前に登録したアプリケーションを選択します。 トークンを表示するには、 [応答 URL]https://jwt.ms が表示される必要があります。
  3. [今すぐ実行] を選択します。
  4. パスワードをリセットしたユーザー アカウントでサインインします。
  5. ここで、ユーザーのパスワードを変更する必要があります。 パスワードを変更し、 [続行] を選択します。 トークンが https://jwt.ms に返され、表示されます。

次回ログイン時にパスワードを強制的にリセットする

次回ログイン時にパスワードを強制的にリセットするには、MS Graph のユーザー更新操作を使用して、アカウント パスワード プロファイルを更新します。 これを行うには、Microsoft Graph アプリケーションユーザー管理者ロールを割り当てる必要があります。 「ユーザー管理者ロールを付与する」の手順に従って、Microsoft Graph アプリケーションにユーザー管理者ロールを割り当てます。

次の例では、パスワード プロファイルの forceChangePasswordNextSignIn 属性を true に更新します。これにより、次回ログイン時にユーザーによるパスワードのリセットが強制されます。

PATCH https://graph.microsoft.com/v1.0/users/<user-object-ID>
Content-type: application/json

{
    "passwordProfile": {
      "forceChangePasswordNextSignIn": true
    }
}

アカウント パスワード プロファイルが設定された時点で、この記事の説明に従って、パスワードを強制的にリセットするフローを構成する必要もあります。

90 日後にパスワードを強制的にリセットする

管理者は、MS Graph を使用して、ユーザーのパスワードの有効期限を 90 日に設定できます。 90 日後に、forceChangePasswordNextSignIn 属性の値が自動的に true に設定されます。 90 日後にパスワードを強制的にリセットするには、ユーザーのプロファイルのパスワード ポリシー属性から DisablePasswordExpiration 値を削除します。

次の例は、パスワード ポリシーを None に更新しています。これにより、90 日後にパスワードのリセットが強制されます。

PATCH https://graph.microsoft.com/v1.0/users/<user-object-ID>
Content-type: application/json

{
  "passwordPolicies": "None"
}

強力なパスワードの複雑さを無効にした場合は、パスワード ポリシーを DisableStrongPassword に更新します。

Note

ユーザーがパスワードをリセットすると、passwordPolicies が DisablePasswordExpiration に戻されます。

PATCH https://graph.microsoft.com/v1.0/users/<user-object-ID>
Content-type: application/json

{
  "passwordPolicies": "DisableStrongPassword"
}

パスワードの有効期限ポリシーが設定されている場合は、この記事の説明に従って、パスワードの強制リセット フローを構成する必要もあります。

パスワードの有効期間

既定では、パスワードは有効期限が切れないように設定されています。 ただし、この値は、Microsoft Graph PowerShell モジュールの Update-MgDomain コマンドレットを使用して構成できます。 このコマンドは、構成した日数後にすべてのユーザーのパスワードが期限切れになるようにテナントを更新します。 次に例を示します。

Import-Module Microsoft.Graph.Identity.DirectoryManagement

Connect-MgGraph  -Scopes 'Domain.ReadWrite.All'

$domainId = "contoso.com"
$params = @{
	passwordValidityPeriodInDays = 90
	passwordNotificationWindowInDays = 15
}

Update-MgDomain -DomainId $domainId -BodyParameter $params

Note

passwordValidityPeriodInDays は、パスワードの変更が必要になるまでの有効な期間を日数で示します。 passwordNotificationWindowInDays は、ユーザーがパスワードの有効期限が切れようとしていることを示す最初の通知を受け取ったときから、パスワードの有効期限が切れるまでの日数を示します。

次のステップ

セルフサービス パスワード リセットを設定します。