你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
在开始之前,请使用此页面顶部的 “选择策略类型 选择器”来选择要设置的策略类型。 Azure Active Directory B2C 提供了两种定义用户如何与应用程序交互的方法:通过预定义的用户流,或者通过可完全配置的自定义策略。 对于每种方法,本文中所需的步骤都不同。
Azure Active Directory B2C(Azure AD B2C)支持在创建帐户时更改最终用户提供的密码的复杂性要求。 默认情况下,Azure AD B2C 使用 强 密码。 Azure AD B2C 还支持配置选项来控制客户可以使用的密码的复杂性。
先决条件
- 创建用户流,以便用户能够注册并登录应用程序。
- 注册 Web 应用程序。
- 完成 Active Directory B2C 中的自定义策略入门中的步骤。 本教程指导你如何更新自定义策略文件以使用 Azure AD B2C 租户配置。
- 注册 Web 应用程序。
强制实施密码规则
在注册或密码重置期间,最终用户必须提供满足复杂性规则的密码。 根据用户流强制实施密码复杂性规则。 在注册期间,一个用户流可以需要一个四位数的密码,而另一个用户流则需要八个字符的字符串密码。 例如,您可以针对成年人和儿童使用不同密码复杂性的用户流。
登录期间永远不会强制实施密码复杂性。 登录期间不会提示用户更改其密码,因为它不符合当前的复杂性要求。
可以在以下类型的用户流中配置密码复杂性:
- 注册或登录用户流
- 密码重置用户流
如果使用自定义策略,则可以 在自定义策略中配置密码复杂性。
配置密码复杂性
- 登录到 Azure 门户。
- 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
- 在 Azure 门户中,搜索并选择 Azure AD B2C。
- 选择“用户流”。
- 选择用户流,然后选择 “属性”。
- 在 “密码复杂性”下,将此用户流的密码复杂性更改为 “简单”、“ 强”或 “自定义”。
比较图表
复杂性 | DESCRIPTION |
---|---|
简单 | 至少要求密码长度范围在 8 到 64 个字符。 |
非常一致 | 至少要求密码长度范围在 8 到 64 个字符。 需要从小写字母、大写字母、数字或符号这 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
。
搜索 BuildingBlocks 元素。 如果该元素不存在,请添加该元素。
找到 ClaimsSchema 元素。 如果该元素不存在,请添加该元素。
将
newPassword
和reenterPassword
声明添加到 ClaimsSchema 元素。<!-- <BuildingBlocks> <ClaimsSchema> --> <ClaimType Id="newPassword"> <PredicateValidationReference Id="CustomPassword" /> </ClaimType> <ClaimType Id="reenterPassword"> <PredicateValidationReference Id="CustomPassword" /> </ClaimType> <!-- </ClaimsSchema> </BuildingBlocks>-->
谓词 定义了一种基础验证,用于检查声明类型的值,并返回真或假。 验证通过使用指定的方法元素和一组与该方法相关的参数来完成。 将以下谓词添加到 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">@#$%^&*\-_+=[]{}|\\:',.?/`~"();!</Parameter> </Parameters> </Predicate> </Predicates> <!-- </BuildingBlocks>-->
在元素关闭后,立即将以下谓词验证添加到
</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-UserWritePasswordUsingObjectId
、LocalAccountWritePasswordUsingObjectId
和技术配置文件。
保存策略文件。
测试策略
上传文件
- 登录到 Azure 门户。
- 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
- 选择 Azure 门户左上角的“所有服务”,然后搜索并选择“Azure AD B2C” 。
- 选择“Identity Experience Framework”。
- 在“自定义策略”页上,选择“ 上传策略”。
- 选择“覆盖策略(若存在)”,然后搜索并选择 TrustFrameworkExtensions.xml 文件。
- 选择“上传”。
运行策略
- 打开注册或登录策略,例如 B2C_1A_signup_signin。
- 对于 应用程序,请选择之前注册的应用程序。 若要查看令牌, 回复 URL 应显示
https://jwt.ms
。 - 选择“立即运行”。
- 选择 “立即注册”,输入电子邮件地址,然后输入新密码。 提供了有关密码限制的指导。 完成输入用户信息,然后选择“ 创建”。 您应该看到返回的令牌的内容。
相关内容
- 了解如何 在 Azure Active Directory B2C 中配置密码更改。
- 详细了解 IEF 引用中的 Predicates 和 PredicateValidations 元素。