共用方式為


在多租用戶架構中使用 Azure Active Directory B2C 的考慮

Azure Active Directory (Azure AD) B2C 提供企業對取用者身分識別即服務。 當您設計多租使用者應用程式時,使用者身分識別通常是其中一個主要考慮。 您的身分識別解決方案可作為應用程式的閘道守衛,確保您的租使用者會保留在您為其定義的界限內。 本文說明在多租用戶解決方案中使用 Azure AD B2C 的考慮和方法。

使用 Azure AD B2C 最常見的原因之一是啟用 應用程式的身分識別同盟 。 身分識別同盟是在兩個識別提供者之間建立信任的程式,讓使用者可以使用預先存在的帳戶登入。 如果您使用 Azure AD B2C,您可以實作身分識別同盟,讓使用者使用其社交或企業帳戶登入。 如果您使用同盟,您的使用者不需要建立應用程式專屬的個別 本機帳戶

如果您不熟悉本主題,建議您檢閱下列資源:

注意

在本文中,會討論兩個類似名稱的概念:應用程式租使用者和 Azure AD B2C 租使用者。

應用程式租使用者一詞用來參考您的租使用者,這可能是您的客戶或使用者群組。

Azure AD B2C 也會使用參考個別目錄的租使用者概念,而多租使用者一詞則用來參考多個 Azure AD B2C 租使用者之間的互動。 雖然詞彙相同,但概念並不相同。 本文提到 Azure AD B2C 租使用者時,會使用完整詞彙 Azure AD B2C 租使用者

多租用戶解決方案中的身分識別

在多租用戶解決方案中,通常會結合多個身分識別服務,以達到不同的需求集。 許多解決方案都有兩組不同的身分識別:

  • 適用於用戶帳戶的客戶身分識別。 他們會控制租用戶使用者如何存取您的應用程式。
  • 內部身分識別,可處理您自己的小組如何管理您的解決方案。

這些不同的身分識別類型通常也會使用不同的身分識別服務。 Azure AD B2C 是租用戶使用者用來存取解決方案的客戶身分識別和存取管理 (CIAM) 服務。 Microsoft Entra ID 是身分識別和存取管理 (IAM) 服務,您和您的小組用來管理 Azure 資源並控制您的應用程式。

請考慮 Fabrikam 所建置的範例多租用戶解決方案。 解決方案會使用這兩個服務的組合,以符合 Fabrikam 的需求:

  • Fabrikam 會實作 Azure AD B2C,讓公司的客戶(租用戶)能夠登入應用程式。
  • Fabrikam 的員工會使用其組織的 Microsoft Entra 目錄來取得其解決方案的存取權,以供管理和管理之用。 他們使用相同的身分識別來存取其他 Fabrikam 資源,例如 Microsoft Office。

下圖說明此範例:

此圖描述兩個具有兩個登入方法的應用程式。

隔離模型

當您使用 Azure AD B2C 時,您必須決定如何在不同的應用程式租用戶之間隔離用戶帳戶。

您需要考慮下列問題:

  • 您需要將登入與客戶的識別提供者同盟嗎? 例如,您是否需要啟用 SAML、Microsoft Entra ID、社交登入提供者或其他來源的同盟?
  • 您或租用戶有數據落地需求嗎?
  • 使用者是否需要存取多個應用程式租使用者?
  • 您需要複雜的許可權和/或角色型訪問控制 (RBAC)嗎?
  • 神秘 登入您的應用程式嗎? 不同的用戶類別通常稱為 使用者角色

下表摘要說明 Azure AD B2C 的主要租用模型之間的差異:

考量 共用 Azure AD B2C 租使用者 垂直分割的 Azure AD B2C 租使用者 每個應用程式租使用者一個 Azure AD B2C 租使用者
資料隔離 來自每個應用程式租用戶的數據會儲存在單一 Azure AD B2C 租使用者中,但只能由系統管理員存取 來自每個應用程式租用戶的數據會分散在數個 Azure AD B2C 租用戶之間,但只能由系統管理員存取 來自每個應用程式租用戶的數據會儲存在專用的 Azure AD B2C 租使用者中,但只能由系統管理員存取
部署複雜度 視分割策略而定,中至高 非常高
要考慮的限制 每個 Azure AD B2C 租使用者的要求,每個用戶端 IP 位址的要求 根據數據分割策略,每個訂用帳戶的要求數目、每個訂用帳戶的 Azure AD B2C 租用戶數目,以及單一使用者的目錄數目的組合 每個訂用帳戶的 Azure AD B2C 租用戶數目、單一使用者的目錄數目上限
作業複雜度 視分割策略而定,中至高 非常高
所需的 Azure AD B2C 租用戶數目 根據分割策略,介於一到 n 之間 n,其中 n 是應用程式租用戶的數目
範例案例 您正在為低或沒有數據落地需求的消費者建置 SaaS 供應專案,例如音樂或視訊串流服務。 您正在建置 SaaS 供應專案,例如會計和記錄企業的應用程式。 您需要支持資料落地需求或大量的自定義同盟識別提供者。 您正在建置 SaaS 供應專案,例如適用於企業的政府記錄保留應用程式。 您的客戶會強制與其他應用程式租用戶隔離高度的數據。

共用 Azure AD B2C 租使用者

如果您的需求允許,通常最簡單的方式是管理單一共用 Azure AD B2C 租使用者。 您只需要長期維護一個租使用者,此選項會建立最低的額外負荷。

注意

我們建議針對大部分案例使用共用的 Azure AD B2C 租使用者。

您應該在下列情況下考慮共用的 Azure AD B2C 租使用者:

  • 您沒有資料落地需求或嚴格的數據隔離需求。
  • 您的應用程式需求位於 Azure AD B2C 服務限制內。
  • 如果您有同盟識別提供者,您可以使用 主領域探索 來自動選取要登入使用者的提供者,或者使用者可以手動從清單中選取一個提供者。
  • 您對於所有應用程式租使用者都有統一的登入體驗。
  • 您的終端用戶必須使用單一帳戶來存取多個應用程式租使用者。

下圖說明共用的 Azure AD B2C 租使用者模型:

此圖顯示三個連線到單一共用 Azure AD B2C 租使用者的應用程式。

垂直分割的 Azure AD B2C 租使用者

布建垂直分割的 Azure AD B2C 租使用者是一種策略,其設計目的是盡可能減少所需的 Azure AD B2C 租用戶數目。 這是其他租使用者模型之間的中間地帶。 當需要時,垂直數據分割可針對特定租使用者提供更大的自定義彈性。 不過,它不會建立與為每個應用程式租使用者布建 Azure AD B2C 租使用者相關聯的作業額外負荷。

此租用模型的部署和維護需求高於單一 Azure AD B2C 租使用者的部署和維護需求,但如果您針對每個應用程式租使用者使用一個 Azure AD B2C 租使用者,則會低於這些租使用者。 您仍然需要設計及實作環境中多個租使用者的部署和維護策略。

垂直數據分割類似於 數據分區化模式。 若要垂直分割 Azure AD B2C 租使用者,您需要將應用程式租用戶組織成邏輯群組。 此租用戶的分類通常稱為 數據分割策略。 分割策略應該以應用程式租使用者的常見穩定因素為基礎,例如區域、大小或應用程式租使用者的自定義需求。 例如,如果您的目標是要解決數據落地需求,您可能會決定針對裝載應用程式租使用者的每個區域部署 Azure AD B2C 租使用者。 或者,如果您依大小分組,您可能會決定在單一 Azure AD B2C 租使用者上找出大部分的應用程式租使用者身分識別,但在自己的專用 Azure AD B2C 租使用者上找出您最大的應用程式租使用者。

重要

請避免將分割區策略以可能會隨著時間變更的因素為基礎,因為很難在 Azure AD B2C 租使用者之間行動使用者。 例如,如果您建立具有多個 SKU 或產品層的 SaaS 供應專案,則不應該根據他們選取的 SKU 來分割使用者,因為如果客戶升級其產品,SKU 可能會變更。

在下列情況下,您應該考慮使用垂直分割策略來布建 Azure AD B2C 租使用者:

  • 您有數據落地需求,或需要依地理位置分隔使用者。
  • 您有許多同盟識別提供者,且無法使用 主領域探索 來自動選取一個使用者登入。
  • 您的應用程式是或可以知道多租使用者,並知道使用者需要登入的 Azure AD B2C 租使用者。
  • 您認為較大的應用程式租使用者可能會達到 Azure AD B2C 限制
  • 您有一個長期策略,可用來部署和維護大量 Azure AD B2C 租使用者。
  • 您有一個策略,可將應用程式租使用者分區化在一或多個 Azure 訂用帳戶之間,以在 Azure 訂用帳戶中部署的 Azure AD B2C 租用戶數目限制內運作。

下圖說明垂直分割的 Azure AD B2C 租使用者模型:

顯示三個應用程式的圖表。兩個連線到共用的 Azure AD B2C 租使用者。第三個連線到自己的 Azure AD B2C 租使用者。

每個應用程式租使用者一個 Azure AD B2C 租使用者

如果您為每個應用程式租使用者布建 Azure AD B2C 租使用者,您可以為每個租使用者自定義許多因素。 不過,此方法會增加額外負荷。 您必須為可能大量的 Azure AD B2C 租用戶開發部署和維護策略。

您也需要注意服務限制。 Azure 訂用帳戶可讓您只部署有限的 Azure AD B2C 租使用者。 如果您需要部署超過限制允許,您必須考慮適當的 訂用帳戶設計 ,以便平衡 Azure AD B2C 租使用者之間的多個訂用帳戶。 還有其他 適用 Microsoft Entra 限制 ,例如單一使用者可以建立的目錄數目,以及使用者可以所屬的目錄數目。

警告

由於這種方法的複雜性,我們強烈建議您先考慮其他隔離模型。 為了完整起見,此處包含此選項,但對於大部分使用案例而言,這不是正確的方法。

常見的誤解是假設,如果您使用 部署戳記模式,則必須在每個戳記中包含身分識別服務。 這不一定正確,而且您通常可以使用另一個隔離模型。 如果您使用此隔離模型,請練習勤奮,並有明確的業務理由。 部署和維護額外負荷相當重要。

只有當下列狀況時,才應考慮為每個應用程式租使用者布建 Azure AD B2C 租使用者:

  • 您對於應用程式租用戶有嚴格的數據隔離需求。
  • 您有部署和維護大量 Azure AD B2C 租用戶的長期策略。
  • 您在一或多個 Azure 訂用帳戶之間分區化客戶,以符合每個訂用帳戶租使用者限制的 Azure AD B2C 策略。
  • 您的應用程式是或可以知道多租使用者,並知道使用者需要登入的 Azure AD B2C 租使用者。
  • 您必須為每個應用程式租使用者執行自訂組態。
  • 您的終端使用者不需要透過相同的登入帳戶存取多個應用程式租使用者。

下圖說明每個應用程式租使用者使用一個 Azure AD B2C 租使用者:

此圖顯示三個應用程式,每個應用程式都連線到自己的 Azure AD B2C 租使用者。

身分識別同盟

您必須透過使用者流程或在自定義原則中設定每個同盟識別提供者。 一般而言,在登入期間,用戶選取要用來驗證的識別提供者。 如果您使用共用租用戶隔離模型或擁有大量同盟識別提供者,請考慮使用 主領域探索 在登入期間自動選取識別提供者。

您也可以使用身分識別同盟作為工具,將 Azure AD B2C 租使用者彼此同盟,以管理多個 Azure AD B2C 租使用者。 這麼做可讓應用程式信任單一 Azure AD B2C 租使用者。 應用程式不需要注意您的客戶會分成多個 Azure AD B2C 租使用者。 當您的使用者依區域分割時,此方法最常用於垂直分割隔離模型中。 如果您採用這種方法,您必須考慮一些考慮。 如需此方法的概觀,請參閱 全域身分識別解決方案

主領域探索

主領域探索 是自動為使用者登入事件選取同盟識別提供者的程式。 如果您自動選取使用者的識別提供者,則不需要提示用戶選取提供者。

當您使用共用的 Azure AD B2C 租使用者,也允許您的客戶攜帶自己的同盟身分識別提供者時,主領域探索很重要。 您可能想要避免使用者需要從識別提供者清單中選取的設計。 這樣做會增加登入程序的複雜性。 此外,使用者可能會不小心選取不正確的提供者,這會導致登入嘗試失敗。

您可以透過各種方式設定主領域探索。 最常見的方法是使用使用者電子郵件地址的網域後綴來判斷識別提供者。 例如,假設 Northwind Traders 是 Fabrikam 的多租使用者解決方案的客戶。 電子郵件位址 user@northwindtraders.com 包含網域後綴 northwindtraders.com,可以對應至 Northwind Traders 同盟識別提供者。

如需詳細資訊,請參閱 主領域探索。 如需如何在 Azure AD B2C 中實作此方法的範例,請參閱 Azure AD B2C 範例 GitHub 存放庫

資料落地

當您布建 Azure AD B2C 租使用者時,您可以針對數據落地的目的,選取要在其中部署租用戶的區域。 這個選擇很重要,因為它會指定客戶數據在待用時所在的區域。 如果您有客戶子集的數據落地需求,請考慮使用垂直分割策略。

授權

針對強身分識別解決方案,除了驗證之外,您還需要考慮授權。 使用 Microsoft 身分識別平台 為您的應用程式建立授權策略的方法有幾個方法。 AppRoles 範例示範如何使用 Azure AD B2C 應用程式角色在應用程式中實作授權。 它也會描述替代的授權方法。

沒有單一授權方法,當您決定方法時,您應該考慮應用程式和客戶的需求。

維護

當您規劃 Azure AD B2C 的多租使用者部署時,您需要考慮 Azure AD B2C 資源的長期維護。 Azure AD B2C 租使用者,例如您的組織 Microsoft Entra 租使用者,是您建立、維護、操作及保護所需的資源。 雖然下列清單並不全面,但您應該考慮在這類區域中產生的維護:

  • 租使用者控管。 神秘 維護 Azure AD B2C 租使用者? 這些系統管理員需要哪些提升許可權的角色? 如何為系統管理員設定條件式存取和 MFA 原則? 如何長期監視 Azure AD B2C 租使用者?
  • 使用者旅程圖組態。 如何將變更部署到 Azure AD B2C 租使用者或租使用者? 如何在部署使用者流程或自定義原則之前測試變更?
  • 同盟識別提供者。 您需要隨著時間新增或移除識別提供者嗎? 如果您允許每個客戶攜帶自己的身分識別提供者,您如何大規模管理該提供者?
  • 應用程式註冊。 許多 Microsoft Entra 應用程式註冊都會使用 用戶端密碼憑證 進行驗證。 當您需要時,如何輪替這些秘密或憑證?
  • 原則金鑰。 如果您使用自定義原則,當您需要時如何輪替原則密鑰?
  • 使用者認證。 如何管理使用者信息和認證? 如果您的其中一位使用者遭到鎖定或忘記密碼,而且需要系統管理員或客戶服務介入,會發生什麼情況?

請記住,您必須針對您所部署的每個 Azure AD B2C 租使用者考慮這些問題。 您也應該考慮當您有多個 Azure AD B2C 租用戶要維護時,程式如何變更。 例如,手動將自定義原則變更部署至一個 Azure AD B2C 租使用者很容易,但手動將自定義原則部署至五個租用戶相當耗時且有風險。

部署和DevOps

定義完善的DevOps程式可協助您將維護 Azure AD B2C 租使用者所需的額外負荷降到最低。 您應該在開發程式中早期實作 DevOps 做法。 在理想情況下,您應該嘗試將所有或大部分的維護工作自動化,包括部署自定義原則或使用者流程的變更。 您也應該規劃建立多個 Azure AD B2C 租使用者,在將變更部署到生產租使用者之前,先逐步測試較低環境中的變更。 您的 DevOps 管線可能會執行這些維護活動。 您可以使用 Microsoft Graph API, 以程式設計方式管理 Azure AD B2C 租使用者

如需 Azure AD B2C 自動化部署和管理的詳細資訊,請參閱下列資源。

重要

某些用來以程序設計方式管理 Azure AD B2C 的端點通常無法使用。 Microsoft Graph Beta 版本中的 API 隨時可能會變更,且受限於發行前版本服務條款。

比較 Microsoft Entra B2B 與 Azure AD B2C

Microsoft Entra B2B 共同作業是一項 Microsoft Entra 外部 ID 功能,可讓您用來邀請來賓使用者加入組織的 Microsoft Entra 租使用者,以便與來賓使用者共同作業。 一般而言,當您需要授與外部使用者,例如廠商存取 Microsoft Entra 租使用者中的資源時,您會使用 B2B 共同作業。

Microsoft Entra 外部 ID 是一組可用來與組織外部用戶互動的方法。 Azure AD B2C 是其中一個 Microsoft Entra 外部 ID 功能,但它提供與其他外部身分識別方法不同的一組功能。 Azure AD B2C 旨在供產品的客戶使用。 您的 Azure AD B2C 租使用者與您的組織 Microsoft Entra 租使用者不同。

視您的使用者角色和案例而定,您可能需要同時使用 Microsoft Entra B2B、Azure AD B2C 或甚至兩者。 例如,如果您的應用程式需要驗證多個類型的使用者,例如組織中的員工、為廠商和客戶工作的使用者,全都在相同的應用程式中,您可以使用 Microsoft Entra B2B 和 Azure AD B2C 一起使用,以符合此需求。

如需詳細資訊,請參閱

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主體作者:

其他投稿人:

若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。

下一步