你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Active Directory B2C 中设置强制密码重置流

开始之前,可以使用“选择策略类型”选择器来选择要设置的策略类型。 Azure Active Directory B2C 提供了两种定义用户如何与应用程序交互的方法:通过预定义的用户流,或者通过可完全配置的自定义策略。 对于每种方法,本文中所需的步骤都不同。

概述

如果用户忘记了密码,作为管理员,你可以重置用户的密码。 你也可以强制他们重置密码。 本文介绍如何在这些情况下强制密码重置。

在管理员通过 Azure 门户重置用户的密码时,forceChangePasswordNextSignIn 属性的值会被设置为 true登录和注册旅程会检查此属性的值。 在用户完成登录后,如果该属性设置为 true,则用户必须重置其密码。 然后,该属性的值会被设置回 false

Force password reset flow

密码重置流适用于 Azure AD B2C 中使用电子邮件地址用户名和密码进行登录的本地帐户。

先决条件

配置用户流

若要在注册或登录用户流中启用“强制密码重置”设置,请执行以下操作:

  1. 登录 Azure 门户
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
  3. 在 Azure 门户中,搜索并选择“Azure AD B2C” 。
  4. 选择“用户流”
  5. 选择要自定义的“注册和登录”或“登录”用户流(“推荐”类型)。
  6. 在左侧菜单中的“设置”下,选择“属性” 。
  7. 在“密码配置”下,选择“强制密码重置” 。
  8. 选择“保存”。

测试用户流

  1. 以用户管理员或密码管理员身份登录到 Azure 门户。 有关可用角色的详细信息,请参阅在 Microsoft Entra ID 中分配管理员角色
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
  3. 在 Azure 门户中,搜索并选择“Azure AD B2C” 。
  4. 选择“用户”。 搜索并选择要用于测试密码重置的用户,然后选择“重置密码”。
  5. 在 Azure 门户中,搜索并选择“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 门户
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
  3. 选择 Azure 门户左上角的“所有服务”,然后搜索并选择“Azure AD B2C” 。
  4. 选择“标识体验框架”。
  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

备注

用户重置其密码后,passwordPolicies 将更改回 DisablePasswordExpiration

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

{
  "passwordPolicies": "DisableStrongPassword"
}

在设置了密码过期策略后,还必须按本文中的说明配置强制密码重置流。

密码过期期限

默认情况下,密码设置为不过期。 但是,可以使用 Microsoft Graph PowerShell 模块中的 Update-MgDomain cmdlet 来配置该值。 此命令更新租户,使所有用户的密码在配置的天数后过期。 例如:

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

注意

passwordValidityPeriodInDays 指示密码在必须更改之前保持有效的天数。 passwordNotificationWindowInDays 指示密码过期日期之前的天数,达到此天数时,用户将收到第一则通知,该通知指出其密码即将过期。

后续步骤

设置自助式密码重置