你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
借助Microsoft Entra 多重身份验证,用户可以选择在注册进行验证的电话号码处接收自动语音呼叫。 恶意用户可以通过创建多个帐户并拨打电话来利用此方法,而无需完成 MFA 注册过程。 这些失败的注册可能会耗尽允许的注册尝试,从而阻止其他用户在 Azure AD B2C 租户中注册新帐户。 为了帮助防止这些攻击,可以使用 Azure Monitor 监视电话身份验证失败并缓解欺诈性注册。
重要
验证器应用(TOTP)提供比 SMS/Phone 多重身份验证更强大的安全性。 若要设置此项,请阅读有关 在 Azure Active Directory B2C 中启用多重身份验证的说明。
先决条件
在开始之前,请创建 Log Analytics 工作区。
创建基于手机的 MFA 事件工作簿
GitHub 中的 Azure AD B2C 报表和警报 存储库包含可用于基于 Azure AD B2C 日志创建和发布报表、警报和仪表板的项目。 下图所示的草稿工作簿重点介绍了与电话相关的失败情况。
“概述”选项卡
“ 概述 ”选项卡上显示了以下信息:
- 失败原因(每个给定原因的电话身份验证失败总数)
- 由于信誉不良而被阻止
- 具有失败电话身份验证的 IP 地址(每个给定 IP 地址的失败电话身份验证总数)
- 与 IP 地址关联的电话号码 - 电话验证失败
- 浏览器(按客户端浏览器统计的电话身份验证失败情况)
- 操作系统(每个客户端操作系统上的电话身份验证失败)
“详细信息”选项卡
在“ 详细信息 ”选项卡上报告以下信息:
- Azure AD B2C 策略 - 电话身份验证失败
- 按电话号码列出的电话身份验证失败 - 时间图表(可调整的时间线)
- Azure AD B2C 策略的电话身份验证失败 - 时间图表(可调整的时间线)
- 按 IP 地址列出的电话身份验证失败 - 时间图表(可调整的时间线)
- 选择电话号码以查看失败详细信息(选择电话号码以获取详细故障列表)
使用工作簿来识别欺诈性注册
可以使用工作簿来了解基于电话的 MFA 事件,并确定对电话服务的潜在恶意使用。
通过回答以下问题了解租户的正常情况:
- 你期望的基于电话的 MFA 来自哪些地区?
- 检查基于电话的 MFA 尝试失败所显示的原因;是否正常或在意料中?
识别欺诈性注册的特征:
- 基于位置:检查“电话身份验证失败(按 IP 地址)”,查找是否有任何与不希望用户注册的位置相关联的帐户。
注释
提供的 IP 地址是大致区域。
- 基于速度:查看“近期失败的身份验证(按天)”,这其中指示了每天拨打异常号码,导致电话身份验证尝试失败的电话号码,按照从最高(左)到最低(右)的顺序排列。
按照下一部分中的步骤,减少欺诈性注册。
缓解用户流中的欺诈性注册
采取以下措施来帮助缓解欺诈性注册。
使用 建议 版本的用户流来执行以下操作:
- 为 MFA 启用电子邮件一次性密码功能(OTP)(适用于注册和登录流)。
- 配置条件访问策略 以阻止基于位置的登录(仅适用于登录流,不适用于注册流)。
- 若要防止对面向使用者的应用进行自动攻击, 请启用 CAPTCHA。 Azure AD B2C 的 CAPTCHA 支持音频和视频 CAPTCHA 挑战,适用于本地帐户的注册和登录流。
从用户验证其电话号码的下拉菜单中删除与组织无关的国家/地区代码(此更改将适用于将来的注册):
以 Azure AD B2C 租户的外部 ID 用户流管理员身份登录到 Azure 门户。
如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
选择 Azure 门户左上角的“所有服务”,搜索并选择 Azure AD B2C。
选择用户流,然后选择“ 语言”。 选择组织的主要地理位置的语言以打开语言详细信息面板。 (在本示例中,我们将为美国选择 英语 en )。 选择“多重身份验证”页,然后选择“下载默认值”(en)。
打开在上一步中下载的 JSON 文件。 在文件中,搜索
DEFAULT行并将其替换为"Value": "{\"DEFAULT\":\"Country/Region\",\"US\":\"United States\"}"。 请务必将Overrides设置为true。
若要有效实现短信拦截,请确保仅针对组织的主要或默认语言启用“替代”设置(设置为 true)。 不要为任何辅助语言或非主要语言启用“替代”,因为这可能会导致意外的短信拦截。 由于 JSON 文件中的国家/地区列表充当允许列表,因此在 Overrides 为 true 时,请确保包含应允许在此列表中发送短信的所有国家/地区,以用于主要语言配置。
注释
可以在元素中 countryList 自定义允许的国家/地区代码列表(请参阅 电话因素身份验证页示例)。
保存 JSON 文件。 在语言详细信息面板中的 “上传新替代”下,选择要上传的修改后的 JSON 文件。
关闭面板并选择“ 运行用户流”。 对于此示例,请确认 美国 是下拉列表中唯一可用的国家/地区代码:
缓解自定义策略中的欺诈性注册
为了帮助防止欺诈性注册,请按照以下步骤删除不适用于组织的任何国家/地区代码:
找到定义
RelyingParty的策略文件。 例如,在 初学者包中,这通常是 SignUpOrSignin.xml 文件。 请参阅以下代码片段。<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="yourtenant.onmicrosoft.com" PolicyId="B2C_1A_signup_signin" PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_signup_signin"> <BasePolicy> <TenantId>yourtenant.onmicrosoft.com</TenantId> <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> </BasePolicy> <BuildingBlocks> <!-- Add the XML code outlined in Step 2 if this section. --> </BuildingBlocks> <RelyingParty> ... </RelyingParty> </TrustFrameworkPolicy>在此
BuildingBlocks策略文件的部分中,添加以下代码。 请确保仅包含与组织相关的国家/地区代码:<BuildingBlocks> <ContentDefinitions> <ContentDefinition Id="api.phonefactor"> <LoadUri>~/tenant/templates/AzureBlue/multifactor-1.0.0.cshtml</LoadUri> <DataUri>urn:com:microsoft:aad:b2c:elements:contract:multifactor:1.2.20</DataUri> <Metadata> <Item Key="TemplateId">azureBlue</Item> </Metadata> <LocalizedResourcesReferences MergeBehavior="Prepend"> <!-- Add only primary business language here --> <LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.phonefactor.en" /> </LocalizedResourcesReferences> </ContentDefinition> </ContentDefinitions> <Localization Enabled="true"> <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll"> <!-- Add only primary business language here --> <SupportedLanguage>en</SupportedLanguage> </SupportedLanguages> <!-- Phone factor for primary business language --> <LocalizedResources Id="api.phonefactor.en"> <LocalizedStrings> <LocalizedString ElementType="UxElement" StringId="countryList">{"DEFAULT":"Country/Region","JP":"Japan","BG":"Bulgaria","US":"United States"}</LocalizedString> </LocalizedStrings> </LocalizedResources> </Localization> </BuildingBlocks>countryList 充当允许列表。 仅允许在此列表中指定的国家/地区(例如日本、保加利亚和美国)使用 MFA。 所有其他国家/地区都将被阻止。
重要
必须将此代码添加到信赖方策略,以确保在服务器端正确实施国家/地区代码限制。