在 Azure 中配置 SMS 與 OTP

1. Azure Active Directory B2C (AAD B2C) 中的 SMS/OTP 身份驗證

1.1. 現狀與原理:電話注冊與登錄

Azure Active Directory B2C (AAD B2C) 提供了將電話號碼作為用戶身份標識進行注冊和登錄的功能,旨在為用戶提供一種便捷的替代傳統電子郵件或用戶名登錄的方式。此功能允許用戶使用其電話號碼作為主要登錄憑據,或者作為現有登錄方法的補充。在用戶流中啟用電話注冊和登錄后,用戶可以選擇使用電話號碼創建新賬戶或登錄現有賬戶。此過程通常涉及用戶輸入其電話號碼,然后通過短信 (SMS) 或語音通話接收一次性密碼 (OTP) 以驗證其所有權。AAD B2C 直接與 Azure AD 多重身份驗證 (MFA) 集成,這意味著在注冊或登錄流程中可以無縫地加入第二層安全驗證 。這種集成使得應用程序能夠處理多種場景,例如,要求訪問某個敏感應用程序時必須進行 MFA,而對其他應用程序則不需要,或者在執行敏感操作(如資金轉賬)前必須驗證電話號碼 。

在 AAD B2C 中配置電話注冊和登錄涉及幾個關鍵步驟。首先,需要在租戶范圍內的本地賬戶身份提供者中配置電話注冊和登錄,以接受電話號碼作為用戶身份 。然后,可以將電話注冊添加到用戶流中,從而允許用戶使用其電話號碼注冊應用程序。此外,還可以啟用恢復電子郵件提示(預覽版),允許用戶指定一個電子郵件地址,以便在無法使用手機時恢復其賬戶 。在用戶注冊或登錄流程中,還可以向用戶顯示同意信息,可以是默認信息,也可以是自定義的同意信息 。值得注意的是,當使用電話注冊配置用戶流時,默認情況下會禁用多重身份驗證 (MFA)。雖然可以在具有電話注冊的用戶流中啟用 MFA,但由于電話號碼已用作主要標識符,因此電子郵件一次性密碼是第二個身份驗證因素的唯一可用選項 。另外,根據 Microsoft Learn 文檔 ,從2025年5月1日起,AAD B2C 將不再向新客戶提供購買,現有客戶可繼續使用,但新客戶需考慮替代方案。

1.2. 實踐:配置用戶流與自定義策略

在 Azure Active Directory B2C (AAD B2C) 中,實現一次性密碼 (OTP) 驗證通常涉及到自定義策略的配置。AAD B2C 允許通過定義技術配置文件 (Technical Profile) 來管理 OTP 的生成和驗證過程 。這些技術配置文件是 XML 文件,身份開發者可以利用它們來編程實現身份任務,例如使用 OpenID Connect、OAuth 或 SAML 等標準協議對用戶進行身份驗證 。自定義策略還支持 REST API 調用,這在需要通過用戶信息端點檢索用戶聲明時非常有用 。AAD B2C 自定義策略入門包提供了一些預構建的策略,以幫助快速上手 。

OTP 技術配置文件的核心功能包括生成驗證碼和后續驗證該驗證碼 。該技術配置文件可以配置為兩種模式:生成代碼 (GenerateCode)驗證代碼 (VerifyCode) 。在生成代碼模式下,可以配置多種參數來控制 OTP 的生成,例如代碼長度 (CodeLength,默認為6位)、字符集 (CharacterSet,默認為0-9,但必須至少包含10個不同的字符)、代碼過期時間 (CodeExpirationInSeconds,默認為600秒,范圍60-1200秒)、最大驗證嘗試次數 (NumRetryAttempts,默認為5次) 以及每個標識符的最大代碼生成嘗試次數 (NumCodeGenerationAttempts,默認為10次) 。此外,還可以配置是否在代碼未過期且仍然有效時重復使用相同的代碼 (ReuseSameCode,默認為 false) 。生成的代碼和嘗試次數會在會話中進行跟蹤 。

在生成代碼模式下,輸入聲明 (InputClaims) 通常包含一個標識符 (identifier),用于識別需要驗證代碼的用戶,通常是代碼交付目的地的標識符,例如電子郵件地址或電話號碼 。輸出聲明 (OutputClaims) 則包含生成的 OTP 代碼 (otpGenerated),該代碼的會話由 AAD B2C 管理 。在驗證代碼模式下,輸入聲明包括之前生成代碼的用戶的標識符 (identifier) 以及用戶提供的待驗證代碼 (otpToVerify) 。驗證成功后,用戶旅程將繼續;如果驗證失敗,則可以配置錯誤消息并通過驗證技術配置文件 (Validation Technical Profile) 在自斷言頁面上顯示 。OTP 技術配置文件的協議名稱 (Protocol Name) 屬性必須設置為 Proprietary,處理程序 (Handler) 屬性必須包含 Azure AD B2C 使用的協議處理程序程序集的完全限定名稱:Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

集成 SMS 和 TOTP (基于時間的一次性密碼) 多因素認證 (MFA) 方法到自定義策略中,可以讓用戶選擇其中一種方式,并將其配置保存在 AAD B2C 中 。在后續登錄時,系統會要求用戶使用已配置的 MFA 方法進行身份驗證 。這通常涉及到定義一系列聲明類型 (Claim Types)、聲明轉換 (Claims Transformations) 和技術配置文件,例如創建完整電話號碼、驗證電話號碼、發送 SMS、驗證 SMS、寫入 MFA 方法和電話號碼以及獲取 MFA 聲明等技術配置文件 。同時,還需要通過自斷言技術配置文件 (Self Asserted Technical Profiles) 來收集用戶輸入,例如選擇 MFA 方法、配置電話號碼、通過 SMS 發送代碼以及輸入通過 SMS 發送的驗證碼等步驟 。最后,這些技術配置文件和用戶旅程 (User Journey) 以及子旅程 (Sub Journey) 進行集成,以實現完整的 MFA 流程 。值得注意的是,AAD B2C 的本地化功能目前不直接支持 SMS 消息的自定義 。然而,可以通過使用第三方 SMS 提供商(如 Twilio)或自定義 SMS 提供商,并結合 DisplayControls 來實現自定義上下文 SMS 消息、自定義電話號碼以及支持本地化和自定義 OTP 設置 。例如,可以使用 PhoneFactor 技術配置文件在自定義策略中向特定電話號碼發送 SMS 消息,該技術配置文件將 SMS 發送到輸入聲明中指定的電話號碼 。

下表總結了 OTP 技術配置文件在生成代碼 (GenerateCode) 和驗證代碼 (VerifyCode) 模式下的關鍵配置參數:

參數 (元數據項)模式描述默認值/范圍/示例
OperationGenerateCode指定操作為生成代碼。GenerateCode
VerifyCode指定操作為驗證代碼。VerifyCode
CodeExpirationInSecondsGenerateCode代碼過期時間(秒)。默認 600 (范圍 60-1200)
CodeLengthGenerateCode生成的 OTP 代碼的長度。默認 6
CharacterSetGenerateCode代碼的字符集,使用正則表達式格式。必須至少包含 10 個不同字符。默認 0-9 (示例: a-z0-9A-Z)
NumRetryAttemptsGenerateCode代碼被視為無效之前的驗證嘗試次數。默認 5
NumCodeGenerationAttemptsGenerateCode每個標識符的最大代碼生成嘗試次數。默認 10
ReuseSameCodeGenerateCode如果代碼未過期且仍然有效,是否應提供相同的代碼而不是生成新代碼。默認 false
UserMessageIfSessionDoesNotExistVerifyCode會話不存在時的用戶消息。可本地化的錯誤消息
UserMessageIfMaxRetryAttemptedVerifyCode達到最大重試次數時的用戶消息。可本地化的錯誤消息
UserMessageIfMaxNumberOfCodeGeneratedVerifyCode代碼生成達到最大嘗試次數時的用戶消息。可本地化的錯誤消息
UserMessageIfInvalidCodeVerifyCode提供無效代碼時的用戶消息。可本地化的錯誤消息
UserMessageIfVerificationFailedRetryAllowedVerifyCode提供無效代碼但允許重試時的用戶消息。可本地化的錯誤消息
UserMessageIfSessionConflictVerifyCode無法驗證代碼時的用戶消息。可本地化的錯誤消息

Table 1: OTP 技術配置文件關鍵配置參數

1.3. 限制與注意事項:MFA 與 SMS 作為第二因素

在 Azure AD B2C 中配置 SMS 和 OTP 作為身份驗證方法時,存在一些限制和注意事項。首先,當在用戶流中配置電話注冊和登錄時,如果電話號碼被用作主要標識符,那么 MFA 的第二個因素唯一可用的選項是電子郵件一次性密碼 。這是因為電話號碼已經作為主要身份驗證手段,系統默認禁用 MFA,或者更準確地說,無法使用 SMS 作為第二因素,因為 SMS 通道已被用于發送登錄碼。AAD B2C 直接集成了 Azure AD 多重身份驗證 (MFA),以便為應用程序中的注冊和登錄體驗添加第二層安全性,并且可以在不編寫代碼的情況下啟用 MFA 。

關于通過 SMS 發送 MFA 驗證碼的配額,Azure AD B2C 存在一些未公開的限制,以防止惡意攻擊和欺詐活動 。如果超出這些未公開的限制,用戶可能會遇到諸如“您已達到短信數量限制。請稍后再試。”或“您提供的電話號碼無法接通。”之類的錯誤消息 。這些限制可能發生在租戶級別,也可能發生在 IP/電話號碼級別 。因此,在進行大量測試或生產環境部署時,需要考慮到這些潛在的節流限制。如果應用程序需要更高的重試次數,可以考慮使用自定義策略,在其中可以定義 OTP 技術配置文件并配置 NumCodeGenerationAttempts(每個標識符的最大代碼生成嘗試次數,默認值為 10)和 NumRetryAttempts(驗證嘗試次數,默認值為 5)等參數 。

在自定義策略中,如果電話號碼格式不正確,更新電話號碼可能會導致問題 。此外,AAD B2C 的本地化功能目前不直接支持 SMS 消息的自定義,這意味著默認的 SMS 消息模板可能無法滿足所有業務場景的需求 。雖然可以通過集成第三方 SMS 提供商來解決此問題,但這會增加實現的復雜性和成本 。另一個需要注意的點是,Azure AD B2C 的用戶界面在顯示 MFA 電話號碼方面可能存在不一致。有用戶報告稱,新的身份驗證方法用戶界面不再顯示通過自定義策略注冊的 MFA 電話號碼,盡管這些號碼仍然可以通過舊的 Azure Graph API 在 strongAuthenticationDetail 字段中查看到 。這給管理員查看和管理用戶的 MFA 電話號碼帶來了一定的困擾。最后,需要注意的是,從 2025 年 5 月 1 日起,Azure AD B2C 將不再向新客戶提供購買服務

2. Azure Communication Services (ACS) 中的 SMS/OTP 應用

2.1. 現狀與原理:ACS 的 SMS 功能概述

Azure Communication Services (ACS) 提供了一套全面的 SMS 功能,使開發者能夠在其應用程序中集成發送和接收短消息服務 (SMS) 文本消息的能力 。ACS 的 SMS SDK 旨在支持多種業務場景,包括客戶服務、預約提醒、雙因素認證 (2FA) 以及其他需要實時通信的場景 。通過 ACS,開發者可以可靠地發送消息,并獲取有關消息可交付性和響應指標的洞察 。ACS 的 SMS 功能強調簡單的設置體驗,使得向應用程序添加 SMS 功能變得便捷 。其關鍵特性包括支持通過免費電話號碼和短代碼在美國進行高速 A2P(應用到人)用例的消息傳遞;支持批量消息傳遞,可一次向多個收件人發送消息;支持雙向對話,適用于客戶支持、警報和預約提醒等場景;提供可靠的傳遞和實時傳遞報告;以及分析功能以跟蹤 SMS 使用模式 。

ACS 支持多種發件人 ID 類型,以適應不同的業務需求和地區法規。這些發件人類型包括免費電話號碼 (Toll-Free Number, 1-8XX)短代碼 (Short Codes, 例如 12345)10 位長代碼 (10 Digit Long Codes, 10DLC, 例如 1-234-123-1234)、移動電話號碼 (Mobile Numbers, 例如 +XX XXXXX XXXXX) 以及字母數字發件人 ID (Alphanumeric Sender ID, 例如 CONTOSO) 。選擇正確的發件人 ID 類型對于消息傳遞活動的成功至關重要,需要考慮目標國家/地區、法規要求、吞吐量需求以及啟動時間表等因素 。例如,在美國,ACS 支持通過免費電話號碼和短代碼進行高速率的應用對人 (A2P) 用例消息傳遞 。ACS 還支持選擇退出 (Opt-Out) 處理,能夠自動檢測并遵守用戶的退訂請求,這是美國運營商對免費電話號碼的強制要求 。ACS 的 SMS 和 PSTN(公共交換電話網絡)功能取決于所使用的電話號碼以及運營所在的國家/地區,該地區由 Azure 賬單地址確定

2.2. 實踐:發送 SMS 與 OTP

使用 Azure Communication Services (ACS) 在應用程序內發送 SMS 消息和 OTP(一次性密碼)主要依賴于 ACS 提供的 SMS SDK。開發者可以利用這些 SDK 來實現各種編程語言(如 C#, JavaScript, Java, Python)的集成 。發送 SMS 消息的基本流程包括初始化 ACS 客戶端,然后調用發送消息的 API,并指定發件人電話號碼(從 ACS 獲取的號碼)和收件人電話號碼,以及消息內容 。對于 OTP 場景,應用程序首先生成一個 OTP 代碼,然后通過 ACS 的 SMS 功能將此代碼作為短信內容發送給用戶。在 ACS 中,要發送 SMS,首先需要獲取一個具備 SMS 功能的電話號碼 。ACS 允許獲取不同類型的號碼,如免費電話號碼、短代碼或長代碼,具體選擇取決于業務需求和目標地區 。

獲取號碼后,開發者可以使用 ACS 的 SmsClient 來發送消息。例如,在 C# 中,可以通過 SmsClient.SendAsync 方法來發送短信,該方法接受收件人電話號碼、發件人電話號碼和消息內容作為參數 。對于 OTP 場景,消息內容將包含生成的 OTP 代碼,并通常附帶一些說明文本,例如“您的驗證碼是:123456”。ACS 還支持更高級的 SMS 功能,如批量消息傳遞,允許開發者一次性向多個收件人發送消息,這對于大規模 OTP 分發或通知場景非常有用 。此外,ACS 提供了消息傳遞狀態的實時報告和送達回執,幫助開發者監控消息的發送狀態和用戶的接收情況 。在某些情況下,例如將 ACS 與 Azure AD B2C 集成以實現自定義 SMS 驗證時,ACS 可以作為 B2C 的 SMS 連接器。這可能涉及到配置一個 REST API 端點,該端點由 B2C 的自定義策略調用,然后此端點再通過 ACS SDK 發送 SMS 。對于 PSTN 呼叫功能,當使用 ACS 的試用電話號碼時,必須驗證接收方電話號碼,驗證過程包括 ACS 向目標號碼發送一個 OTP 。

2.3. 限制與注意事項:服務限制與合規性

使用 Azure Communication Services (ACS) 發送 SMS 和 OTP 時,開發者需要關注其服務限制和合規性要求。首先,ACS 的 SMS 和 PSTN 功能受到電話號碼類型和運營國家/地區的限制,這些限制與 Azure 賬單地址相關聯 。因此,在選擇電話號碼和規劃 SMS 活動之前,務必查閱 Azure 官方文檔中關于訂閱資格和各國/地區號碼類型可用性的詳細信息 。ACS 對 SMS 消息的發送速率有限制,以防止濫用并確保服務穩定性。例如,對于免費電話號碼,速率限制為每個號碼每分鐘 200 條消息或 200 個消息單位;對于短代碼,為每個號碼每分鐘 6000 條消息或 6000 個消息單位;對于字母數字發送者 ID,為每個資源每分鐘 600 條消息或 600 個消息單位 。如果發送或接收大量消息,可能會收到 429 錯誤(請求過多),表明即將達到服務限制 。

在字符和消息長度方面,單個 SMS 消息的最大大小為 140 字節。實際字符限制取決于消息內容和編碼(GSM-7 或 UCS-2)。例如,使用 GSM-7 編碼的純文本消息每個段最多可包含 160 個字符,而使用 UCS-2 編碼的 Unicode 消息(如包含表情符號或國際語言)每個段最多可包含 70 個字符 。雖然 ACS 支持發送和接收長消息(超過 2048 個字符),但為了確保最佳送達率,建議將 SMS 消息長度控制在 320 個字符以內 。對于美國短代碼,發送或接收包含非 ASCII 字符的消息時,存在一個已知的限制,即最多四個段 。

合規性是 SMS 通信中的一個關鍵方面。ACS 強調了對選擇退出 (Opt-Out) 處理的支持,特別是對于美國的免費電話號碼和短代碼,運營商強制要求并執行選擇退出機制 。對于在美國使用免費電話號碼發送 SMS,ACS 要求進行免費電話號碼驗證 (Toll-Free Verification) 。這個過程需要提交一份程序簡介 (Program Brief) 申請,通常需要五到六周的時間 。同樣,要使用 10DLC 發送 A2P SMS 消息,企業必須完成品牌注冊和活動注冊,以確保符合運營商和 CTIA 的指導方針 。這些合規性要求旨在防止垃圾郵件并保護用戶隱私。此外,ACS 的一些功能可能處于預覽狀態,預覽版 API 和 SDK 不提供服務級別協議 (SLA),不建議用于生產工作負載 。開發者應關注 ACS 的定價模型,了解發送 SMS 消息的成本 。

下表總結了 ACS 中不同發件人 ID 類型的速率限制:

發件人 ID 類型速率限制 (每分鐘)備注
免費電話號碼 (Toll-Free)200 條消息或 200 消息單位每個號碼
短代碼 (Short Code)6000 條消息或 6000 消息單位每個號碼
字母數字發件人 ID600 條消息或 600 消息單位每個資源

Table 2: ACS 發件人 ID 類型速率限制

下表總結了 ACS 中不同發件人 ID 類型的合規性要求:

發件人 ID 類型主要合規性要求備注
免費電話號碼 (Toll-Free)免費電話號碼驗證 (Toll-Free Verification)美國運營商要求,提交程序簡介,審核約 5-6 周 。
10 位長代碼 (10DLC)品牌注冊和活動注冊 (Brand & Campaign Registration)美國 A2P 消息,符合運營商和 CTIA 指導方針,審核時間數天 。
所有類型遵守消息傳遞政策,禁止垃圾郵件、欺詐性消息否則可能導致服務暫停或終止。
所有類型處理用戶選擇退出 (Opt-Out) 請求美國運營商對免費電話號碼和短代碼的強制要求。

Table 3: ACS 發件人 ID 類型合規性要求

3. Azure 多重身份驗證 (MFA) 中的 SMS/OTP 驗證

3.1. 現狀與原理:SMS 在 MFA 中的角色

在 Azure 多重身份驗證 (MFA) 中,SMS(短消息服務)和 OTP(一次性密碼)扮演著重要的驗證因素角色,旨在為用戶登錄提供額外的安全層。Azure MFA 提供了多種驗證方法,SMS 是其中一種常用的方式 。其基本原理是,在用戶輸入用戶名和密碼(第一因素)之后,系統會通過 SMS 向用戶預先注冊的手機號碼發送一個包含 OTP 的文本消息 。用戶隨后需要在登錄界面輸入這個 OTP 才能完成身份驗證過程 。這種方式被稱為單向 SMS (one-way SMS) 。Azure MFA 也曾經支持過雙向 SMS (two-way SMS),即用戶需要將特定代碼回復給系統,但此方法已在 2018 年 11 月 14 日后被棄用并不再支持 。

SMS 驗證作為一種“擁有的東西”(用戶擁有的手機)因素,與“知道的東西”(密碼)和“固有的東西”(生物特征)共同構成了多因素認證的基礎。在 Azure AD B2C 中,當啟用 MFA 時,用戶可以在首次注冊或登錄時提供并驗證其電話號碼 。在后續的登錄過程中,用戶可以選擇通過短信接收 OTP 代碼,或者選擇接聽自動語音來電(如果也配置了電話呼叫驗證) 。Microsoft Entra ID(以前稱為 Azure Active Directory)也支持基于 SMS 的用戶登錄,允許用戶僅使用注冊的電話號碼和通過 SMS 發送的 OTP 進行登錄,而無需用戶名和密碼 。然而,這種 SMS 作為第一因素的登錄方式主要設計用于簡化一線員工的登錄體驗,并不推薦用于信息工作者 (Information Workers) 。對于信息工作者,SMS 通常作為 MFA 的第二因素。Microsoft 建議,如果為一線員工啟用 SMS 認證,應考慮遷移到使用 QR 碼認證(預覽版),因為 QR 碼認證不易受到釣魚攻擊 。盡管 SMS 作為一種便捷的 MFA 方法被廣泛使用,但 Microsoft 也指出了基于電話的 MFA 響應(包括 SMS 和語音呼叫)可能不如其他方法(如驗證器應用、Windows Hello 或 FIDO2 安全密鑰)安全

3.2. 實踐:配置與使用

在 Azure 多重身份驗證 (MFA) 中配置和使用 SMS/OTP 驗證,主要涉及到在 Azure 門戶中啟用相應的驗證方法,并指導用戶注冊其電話號碼。對于 Azure AD B2C,管理員可以在用戶流或自定義策略中啟用 MFA,并選擇 SMS 作為可用的驗證方法之一 。當用戶注冊或登錄時,系統會提示他們提供并驗證一個電話號碼。在后續登錄時,如果 MFA 被觸發(例如通過條件訪問策略),用戶可以選擇通過 SMS 接收 OTP 代碼 。對于企業用戶(使用 Microsoft Entra ID),管理員可以通過導航到 Microsoft Entra ID -> 用戶和組 -> 所有用戶 -> 每用戶 MFA -> 服務設置,來選擇可供用戶使用的驗證方法 。在這里,管理員可以勾選“短信”或“致電手機”等選項 。用戶在其賬戶中注冊 MFA 時,可以從管理員已啟用的方法中選擇其偏好的驗證方法,通常通過 https://account.activedirectory.windowsazure.com/Proofup.aspx 等頁面配置 。

在 Microsoft Entra ID 中,還可以為特定用戶或組啟用基于 SMS 的身份驗證(作為第一因素) 。這需要至少具備身份驗證策略管理員 (Authentication Policy Administrator) 角色 。啟用此功能后,管理員需要為用戶賬戶設置電話號碼,用戶即可在支持的應用程序登錄界面輸入電話號碼,并通過接收到的 SMS OTP 完成登錄 。需要注意的是,每個啟用 SMS 認證方法的用戶都必須獲得許可,即使他們不使用該方法 。在 Azure AD B2C 的自定義策略中,集成 SMS 和 TOTP MFA 方法需要詳細的技術配置,包括定義聲明類型、聲明轉換以及一系列技術配置文件 。對于通過 Azure NPS (Network Policy Server) 擴展進行 MFA 的場景,如果用戶使用基于文本的 MFA 方法(如 SMS),他們會收到一條包含 OTP 的短信,需要在 VPN 客戶端界面輸入該 OTP 。

3.3. 限制與注意事項:對信息工作者的建議與已知問題

在 Azure 多重身份驗證 (MFA) 中使用 SMS/OTP 作為驗證方式時,存在一些重要的限制和注意事項,特別是對于信息工作者 (Information Workers)。Microsoft 明確指出,雖然基于 SMS 的身份驗證(作為第一因素)可以簡化一線員工的登錄體驗,但并不推薦將其用于信息工作者 。對于信息工作者,更安全的 MFA 方法,如 Microsoft Authenticator 應用通知、Windows Hello 或 FIDO2 安全密鑰,是更優的選擇 。Microsoft 甚至建議,如果為一線員工啟用了 SMS 認證,也應考慮遷移到 QR 碼認證(預覽版),因為 QR 碼認證不易受到釣魚攻擊 。

基于電話的 MFA 響應(包括 SMS 和語音呼叫)被認為安全性較低 。SMS 消息是以明文形式發送的,存在被攔截和泄露的風險 。此外,SIM 卡交換攻擊也是一個嚴重威脅 。存在一些已知的技術限制。例如,在 Microsoft Entra ID 中,基于 SMS 的身份驗證目前與 Microsoft Entra 多重身份驗證不兼容(當 SMS 作為第一因素時)。除了 Teams 之外,基于 SMS 的身份驗證與原生 Office 應用程序不兼容 。此外,基于 SMS 的身份驗證不支持 B2B 賬戶,并且聯合用戶不會在本地租戶中進行身份驗證,而僅在云中進行身份驗證 。跨租戶同步也不支持啟用了 SMS 登錄的用戶 。當使用 Azure NPS 擴展進行 MFA 時,如果用戶使用基于文本的 MFA 方法(如 SMS),NPS 策略中配置的任何 RADIUS 屬性可能不會轉發到 RADIUS 客戶端,這是一個 Microsoft NPS 擴展的已知限制 。在 Azure AD B2C 中,如果管理員從 MFA 服務中刪除了某個已注冊的驗證方法(例如 SMS 文本)作為選項,已經使用該方法注冊的用戶可能會受到影響。關于 Azure AD B2C 中通過 SMS 發送 MFA 驗證碼的配額,存在一些未公開的限制 。

下表總結了 Azure MFA 中 SMS/OTP 驗證的主要限制和建議:

方面限制/建議備注/引用
信息工作者 (IW) 使用不推薦用于 IW建議使用更安全的驗證方法 (如 Authenticator 應用, FIDO2)
SMS 作為第一因素與 Microsoft Entra MFA 不兼容主要設計用于一線員工
Office 應用兼容性與原生 Office 應用程序不兼容 (Teams 除外)可能影響 IW 日常工作
B2B 賬戶不支持 B2B 賬戶限制在協作場景中的應用
聯合用戶在云中進行身份驗證,而非主租戶行為可能與本地身份驗證不同
跨租戶同步不支持啟用了 SMS 登錄的用戶影響用戶管理策略
NPS 擴展使用基于文本的 MFA 方法時,RADIUS 屬性可能未轉發可能導致訪問控制問題
AAD B2C MFA 配額通過 SMS 發送 MFA 驗證碼存在未公開的配額限制超出限制可能導致錯誤
許可證啟用 SMS 身份驗證方法的用戶需要擁有相應的許可證例如 Microsoft Entra ID P1/P2, EMS E3/E5, Microsoft 365 E3/E5

Table 4: Azure MFA 中 SMS/OTP 驗證的限制和建議

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90648.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90648.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90648.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

簡單實現支付密碼的頁面及輸入效果

干我們這行,風吹日曬不到,就怕甲方突發奇想。 今天客戶要做一個安全密碼前置校驗,還要做成支付寶那種效果。ps:android端 心理吐槽了一萬遍以后,還是得面對現實。 先用通義問一遍,給了兩個方案,要么自己寫&…

proxmox 解決docker容器MongoDB創建報錯MongoDB 5.0+ requires a CPU with AVX support

目錄 最簡單直接的方式 測試MongoDB docker compose的安裝shell腳本 驗證訪問 最簡單直接的方式 讓虛擬機直接使用宿主機的物理 CPU 功能標志。 打開 Proxmox Web UI。 選擇你的 VM → 硬件 (Hardware) → CPU → 點擊 編輯 (Edit)。 將 CPU 類型改為 host。 確認并重啟…

向前滾動累加SQL 實現思路

一、業務背景在經營分析場景里,我們經常需要回答:“截至今天,過去 N 天/月/周累計發生了多少?”“把維度切到省、市、房型、項目經理、代理商等,結果又是什么?”本文用兩個真實需求做演示:以天為…

Spring AI(14)——文本分塊優化

RAG時,檢索效果的優劣,和文本的分塊的情況有很大關系。SpringAI中通過TokenTextSplitter對文本分塊。本文對SpringAI提供的TokenTextSplitter源碼進行了分析,并給出一些自己的想法,歡迎大家互相探討。查看了TokenTextSplitter的源…

Python----大模型(RAG 的智能評估-LangSmith)

一、LangSmith LangSmith是LangChain的一個子產品,是一個大模型應用開發平臺。它提供了從原 型到生產的全流程工具和服務,幫助開發者構建、測試、評估和監控基于LangChain 或其他 LLM 框架的應用程序。 安裝 LangSmith pip install langsmith0.1.137 官網…

磁懸浮軸承轉子不平衡質量控制策略設計:原理、分析與智能實現

磁懸浮軸承(Active Magnetic Bearing, AMB)以其無接觸、無摩擦、高轉速、無需潤滑等革命性優勢,在高端旋轉機械領域(如高速電機、離心壓縮機、飛輪儲能、航空航天動力系統)展現出巨大潛力。然而,轉子固有的質量不平衡是AMB系統面臨的核心挑戰之一,它誘發強同步振動,威脅…

C++查詢mysql數據

文章目錄 文章目錄 1.前言 2. 代碼 (1)執行查詢SQL (2)獲取結果集 (3)遍歷結果集(獲取字段數、行數) (4)釋放資源 3.完整代碼 1.前言 我們成功連接數…

【論文閱讀】-《GenAttack: Practical Black-box Attacks with Gradient-Free Optimization》

GenAttack:利用無梯度優化的實用黑盒攻擊 Moustafa Alzantot UCLA Los Angeles, U.S.A malzantotucla.edu Yash Sharma Cooper Union New York, U.S.A sharma2cooper.edu Supriyo Chakraborty IBM Research New York, U.S.A supriyous.ibm.com Huan Zhang UCLA Los…

CT、IT、ICT 和 DICT區別

這四個術語:CT、IT、ICT 和 DICT,是信息通信行業中常見的核心概念,它們既有演進關系,又有各自的技術重點。🔹 一、CT(Communication Technology)通信技術**定義:**以語音通信為核心的…

Effective C++ 條款4:確定對象被使用前已先被初始化

Effective C 條款4:確定對象被使用前已先被初始化核心思想:永遠在使用對象前將其初始化。未初始化對象是未定義行為的常見來源,尤其對于內置類型。 1. 內置類型手動初始化 int x 0; // 手動初始化 const char* text &quo…

LangSmith的配置介紹

文章目錄注冊及登錄生成API KeyLangSmith的配置方式一:放運行環境里方式二:寫代碼里執行代碼查看LangSmith上是否看到本次運行的項目記錄LangSmith的其他注意注冊及登錄 首先使用郵箱注冊一個賬號及設置密碼,等收到收到郵件后,進…

Linux的生態與軟件安裝

堅持用 清晰易懂的圖解 代碼語言,讓每個知識點變得簡單! 🚀呆頭個人主頁詳情 🌱 呆頭個人Gitee代碼倉庫 📌 呆頭詳細專欄系列 座右銘: “不患無位,患所以立。” Linux的生態與軟件安裝前言目錄…

3.4 安全-分布式-數據庫-挖掘

一、數據庫的安全數據庫里面的安全措施:用戶標識和鑒定:用戶的賬戶口令等存取控制:對用戶操作進行控權,有對應權限碼才能操作。密碼存儲和傳輸:加密存儲。視圖的保護:視圖需要授權審計:專門的文…

多線程 Reactor 模式

目錄 多線程 Reactor 模式的核心動機 多線程演進方向 多線程 Reactor 模型結構 多線程 EchoServer 實現核心部分 Handler 的多線程化 多線程 Reactor 的三個核心點 本篇文章內容的前置知識為 單線程 Reactor 模式,如果不了解,可點擊鏈接學習 單線程…

[NLP]多電源域設計的仿真驗證方法

多電源域設計的仿真驗證方法 1. 更復雜的 Testbench 例子(多電源域、復雜低功耗場景) 假設有兩個電源域 PD1 和 PD2,分別對應控制信號 pwr_sw_ctrl1、iso_ctrl1、ret_ctrl1 和 pwr_sw_ctrl2、iso_ctrl2、ret_ctrl2,且兩域之間有通信。 RTL 端口聲明(簡化版) module top…

Apache Ignite 中 WHERE 子句中的子查詢(Subqueries in WHERE Clause)的執行方式

這段內容是關于 Apache Ignite 中 WHERE 子句中的子查詢(Subqueries in WHERE Clause)的執行方式 的說明。理解這段內容對于編寫高效的 SQL 查詢、避免性能瓶頸非常重要。下面我將為你 逐句解釋并深入理解這段內容。🧾 原文翻譯 解釋 原文&a…

MySQL(153)如何使用全文索引?

MySQL的全文索引(Full-Text Index)是一種特殊的索引類型,專門用于加速文本數據的搜索。與普通的B樹索引不同,全文索引適用于大文本字段(如TEXT、VARCHAR等)的全文搜索。它通過構建一個倒排索引,…

微分方程入門之入門之入門,純筆記

當描述 相對變化量 比 絕對量 更容易時,微分方程就經常用到了。 比如,描述為什么種群數量增加or減少【相對】,比描述為什么它在某個時間點是某個特定值【絕對】更容易。 物理學中,運動經常用力來描述,力–>代表變化…

【C++】簡單學——vector類(模擬實現)

模擬實現的準備工作 看源碼,了解這個類的大概組成 1.先看成員變量 成員變量的組成是三個迭代器 問:這個iterator內嵌類型究竟是什么?即這個迭代器是什么 迭代器實際就是T* 問:這三個迭代器代表什么意思? 連蒙帶猜…

【WRF】根據自動安裝腳本安裝 WRF / WRF-CHEM等

目錄 GitHub 上 WRF 自動安裝腳本 ?? 腳本的作用 ??? 支持的系統 ?? 可安裝的 WRF 版本及其選項 ? 如何使用(以 WRF 4.6.1 為例) ? 依賴庫的安裝位置 完整安裝腳本分析 參考 GitHub 上 WRF 自動安裝腳本 GitHub 上的 WRF-Install-Script 項目的 Releases(發布版本…