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

在 Azure Active Directory B2C 中配置密码的复杂性要求

重要

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息

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

Azure Active Directory B2C(Azure AD B2C)支持在创建帐户时更改最终用户提供的密码的复杂性要求。 默认情况下,Azure AD B2C 使用 密码。 Azure AD B2C 还支持配置选项来控制客户可以使用的密码的复杂性。

先决条件

强制实施密码规则

在注册或密码重置期间,最终用户必须提供满足复杂性规则的密码。 根据用户流强制实施密码复杂性规则。 在注册期间,一个用户流可以需要一个四位数的密码,而另一个用户流则需要八个字符的字符串密码。 例如,您可以针对成年人和儿童使用不同密码复杂性的用户流。

登录期间永远不会强制实施密码复杂性。 登录期间不会提示用户更改其密码,因为它不符合当前的复杂性要求。

可以在以下类型的用户流中配置密码复杂性:

  • 注册或登录用户流
  • 密码重置用户流

如果使用自定义策略,则可以 在自定义策略中配置密码复杂性

配置密码复杂性

  1. 登录到 Azure 门户
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
  3. 在 Azure 门户中,搜索并选择 Azure AD B2C
  4. 选择“用户流”。
  5. 选择用户流,然后选择 “属性”。
  6. “密码复杂性”下,将此用户流的密码复杂性更改为 “简单”、“ ”或 “自定义”。

比较图表

复杂性 DESCRIPTION
简单 至少要求密码长度范围在 864 个字符。
非常一致 至少要求密码长度范围在 864 个字符。 需要从小写字母、大写字母、数字或符号这 4 种元素中选择 3 个。
习惯 此选项最能控制密码复杂性规则。 它允许配置自定义长度。 它还允许接受仅限号码的密码(pins)。

自定义选项

字符集

允许你只接受数字(如密码)或完整字符集。

  • 在输入密码时,仅允许输入数字(0-9)。
  • 所有 都允许任何字母、数字或符号。

长度

允许你控制密码的长度要求。

  • 最小长度 必须至少为 4。
  • 最大长度 必须大于或等于最小长度,最多可以为 256 个字符。

字符类

允许你控制密码中使用的不同字符类型。

  • 4 中的 2:小写字符、大写字符、数字(0-9),符号 确保密码至少包含两个字符类型。 例如,数字和小写字符。

  • 4 中的 3 个:小写字符、大写字符、数字(0-9),符号 可确保密码至少包含三个字符类型。 例如,数字、小写字符和大写字符。

  • 4 中的 4:小写字符、大写字符、数字(0-9),符号 可确保密码包含所有四个字符类型。

    注释

    要求“全部 4 个”可能会对最终用户造成困扰。 一些研究表明,这一要求不会提高密码熵。 请参阅 NIST 密码指南

密码谓词验证

若要配置密码复杂性,请使用对newPassword的引用替代 reenterPassword声明类型。 PredicateValidations 元素对一组谓词进行分组,以形成可应用于声明类型的用户输入验证。 打开策略的扩展文件。 例如,SocialAndLocalAccounts/TrustFrameworkExtensions.xml

  1. 搜索 BuildingBlocks 元素。 如果该元素不存在,请添加该元素。

  2. 找到 ClaimsSchema 元素。 如果该元素不存在,请添加该元素。

  3. newPasswordreenterPassword 声明添加到 ClaimsSchema 元素。

    <!-- 
    <BuildingBlocks>
      <ClaimsSchema> -->
        <ClaimType Id="newPassword">
          <PredicateValidationReference Id="CustomPassword" />
        </ClaimType>
        <ClaimType Id="reenterPassword">
          <PredicateValidationReference Id="CustomPassword" />
        </ClaimType>
      <!-- 
      </ClaimsSchema>
    </BuildingBlocks>-->
    
  4. 谓词 定义了一种基础验证,用于检查声明类型的值,并返回真或假。 验证通过使用指定的方法元素和一组与该方法相关的参数来完成。 将以下谓词添加到 BuildingBlocks 元素,紧接在关闭 </ClaimsSchema> 元素之后:

    <!-- 
    <BuildingBlocks>-->
      <Predicates>
        <Predicate Id="LengthRange" Method="IsLengthRange">
          <UserHelpText>The password must be between 6 and 64 characters.</UserHelpText>
          <Parameters>
            <Parameter Id="Minimum">6</Parameter>
            <Parameter Id="Maximum">64</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Lowercase" Method="IncludesCharacters">
          <UserHelpText>a lowercase letter</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">a-z</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Uppercase" Method="IncludesCharacters">
          <UserHelpText>an uppercase letter</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">A-Z</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Number" Method="IncludesCharacters">
          <UserHelpText>a digit</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">0-9</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Symbol" Method="IncludesCharacters">
          <UserHelpText>a symbol</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">@#$%^&amp;*\-_+=[]{}|\\:',.?/`~"();!</Parameter>
          </Parameters>
        </Predicate>
      </Predicates>
    <!-- 
    </BuildingBlocks>-->
    
  5. 元素关闭后,立即将以下谓词验证添加到</Predicates>元素中:

    <!-- 
    <BuildingBlocks>-->
      <PredicateValidations>
        <PredicateValidation Id="CustomPassword">
          <PredicateGroups>
            <PredicateGroup Id="LengthGroup">
              <PredicateReferences MatchAtLeast="1">
                <PredicateReference Id="LengthRange" />
              </PredicateReferences>
            </PredicateGroup>
            <PredicateGroup Id="CharacterClasses">
              <UserHelpText>The password must have at least 3 of the following:</UserHelpText>
              <PredicateReferences MatchAtLeast="3">
                <PredicateReference Id="Lowercase" />
                <PredicateReference Id="Uppercase" />
                <PredicateReference Id="Number" />
                <PredicateReference Id="Symbol" />
              </PredicateReferences>
            </PredicateGroup>
          </PredicateGroups>
        </PredicateValidation>
      </PredicateValidations>
    <!-- 
    </BuildingBlocks>-->
    

禁用强密码

以下技术 配置文件是 Active Directory 技术配置文件,这些配置文件将数据读取和写入到 Microsoft Entra ID。 在扩展文件中覆盖这些技术配置文件。 使用 PersistedClaims 禁用强密码策略。 找到 ClaimsProviders 元素。 添加以下声明提供程序,如下所示:

<!-- 
<ClaimsProviders>-->
  <ClaimsProvider>
    <DisplayName>Azure Active Directory</DisplayName>
    <TechnicalProfiles>
      <TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
        <PersistedClaims>
          <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration, DisableStrongPassword"/>
        </PersistedClaims>
      </TechnicalProfile>
      <TechnicalProfile Id="AAD-UserWritePasswordUsingObjectId">
        <PersistedClaims>
          <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration, DisableStrongPassword"/>
        </PersistedClaims>
      </TechnicalProfile>
    </TechnicalProfiles>
  </ClaimsProvider>
<!-- 
</ClaimsProviders>-->

如果使用基于用户名的登录策略,请使用AAD-UserWriteUsingLogonEmail策略更新AAD-UserWritePasswordUsingObjectIdLocalAccountWritePasswordUsingObjectId技术配置文件。

保存策略文件。

测试策略

上传文件

  1. 登录到 Azure 门户
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
  3. 选择 Azure 门户左上角的“所有服务”,然后搜索并选择“Azure AD B2C” 。
  4. 选择“Identity Experience Framework”。
  5. 在“自定义策略”页上,选择“ 上传策略”。
  6. 选择“覆盖策略(若存在)”,然后搜索并选择 TrustFrameworkExtensions.xml 文件
  7. 选择“上传”。

运行策略

  1. 打开注册或登录策略,例如 B2C_1A_signup_signin
  2. 对于 应用程序,请选择之前注册的应用程序。 若要查看令牌, 回复 URL 应显示 https://jwt.ms
  3. 选择“立即运行”。
  4. 选择 “立即注册”,输入电子邮件地址,然后输入新密码。 提供了有关密码限制的指导。 完成输入用户信息,然后选择“ 创建”。 您应该看到返回的令牌的内容。