分享方式:


與 Microsoft Entra ID 同盟的多網域支援

下列文件將說明與 Microsoft 365 或 Microsoft Entra 網域同盟時,如何使用多個頂層網域和子網域。

多個最上層網域支援

若要讓多個頂層網域與 Microsoft Entra ID 同盟,您必須執行部分同盟單一頂層網域時不需要的額外設定。

當網域與 Microsoft Entra ID 同盟時,系統會在 Azure 中的網域上設定數個屬性。 其中一個重要屬性是 IssuerUri。 此屬性是 Microsoft Entra ID 用於識別權杖相關網域的 URI。 該 URI 不需要解析為任何內容,不過它必須是有效的 URI。 根據預設,Microsoft Entra ID 會在內部部署 AD FS 設定中將 URI 設定為同盟服務識別碼的值。

注意

同盟服務識別碼是可唯一識別同盟服務的 URI。 同盟服務是能做為 Security Token Service 的 AD FS 執行個體。

您可以使用 PowerShell 命令 Get-MsolDomainFederationSettings -DomainName <your domain> 來檢視 IssuerUri。

注意

自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模組已被淘汰。 若要深入了解,請閱讀淘汰更新。 在此日期之後,對這些模組的支援僅限於對 Microsoft Graph PowerShell SDK 的移轉協助和安全性修正。 淘汰的模組將繼續運作至 2025 年 3 月 30 日。

我們建議移轉至 Microsoft Graph PowerShell 以與 Microsoft Entra ID (以前稱為 Azure AD) 互動。 如需了解常見的移轉問題,請參閱移轉常見問題注意:MSOnline 1.0.x 版可能會在 2024 年 6 月 30 日之後發生中斷。

當您加入多個頂層網域時,問題便油然而生。 例如,假設已在 Microsoft Entra ID 和內部部署環境之間設定同盟。 針對本文件,會使用 bmcontoso.com 作為網域。 現在,假設我們加入第二個頂層網域 bmfabrikam.com。

顯示多個頂層網域的螢幕擷取畫面

當您嘗試將 bmfabrikam.com 網域轉換為同盟時,就會發生錯誤。 原因在於根據 Microsoft Entra ID 的限制,不允許多個網域的 IssuerUri 屬性擁有相同值。

PowerShell 中顯示同盟錯誤的螢幕擷取畫面。

SupportMultipleDomain 參數

若要解決此限制,您需要新增不同的 IssuerUri,這可以透過使用 -SupportMultipleDomain 參數來達成。 這個參數可搭配下列 Cmdlet 使用:

  • New-MsolFederatedDomain
  • Convert-MsolDomaintoFederated
  • Update-MsolFederatedDomain

Microsoft Entra ID 可透過此參數,根據網域名稱設定 IssuerUri。 IssuerUri 將是 Microsoft Entra ID 中所有目錄中的唯一項目。 使用參數可讓 PowerShell 命令順利完成。

顯示 PowerShell 命令成功完成的螢幕擷取畫面。

-SupportMultipleDomain 不會變更其他端點,這些端點仍設為指向 adfs.bmcontoso.com 上的同盟服務。

-SupportMultipleDomain 也會確保 AD FS 系統在簽發給 Microsoft Entra ID 之權杖中包含正確的簽發者值。 此值的設定方式是取得使用者 UPN 的網域部分,並使用其作為 IssuerUri 中的網域,也就是 https://{upn suffix}/adfs/services/trust

因此在 Microsoft Entra ID 或 Microsoft 365 驗證期間,系統會以使用者權杖的 IssuerUri 項目來尋找 Microsoft Entra ID 中的網域。 如果找不到相符項目,驗證將會失敗。

例如,如果使用者的 UPN 是權杖中的 bsimon@bmcontoso.com,IssuerUri 元素 (AD FS 簽發者),將會被設定為 http://bmcontoso.com/adfs/services/trust。 此元素將會與 Microsoft Entra ID 設定相符,而驗證將會成功。

下列自訂宣告規則會實作此邏輯:

c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, ".+@(?<domain>.+)", "http://${domain}/adfs/services/trust/"));

重要

若要在嘗試加入新網域或轉換已經存在的網域時使用 -SupportMultipleDomain 參數,您的同盟信任需要已設定為支援它們。

如何更新 AD FS 與 Microsoft Entra ID 之間的信任

若尚未在 AD FS 與 Microsoft Entra ID 執行個體之間設定同盟信任,則可能須重新建立此信任。 原因在於,若最初未使用 -SupportMultipleDomain 參數進行設定,系統會將 IssuerUri 設定為預設值。 在下列螢幕擷取畫面中,您可以看到已將 IssuerUri 設定為 https://adfs.bmcontoso.com/adfs/services/trust

若已成功在 Microsoft Entra 系統管理中心新增新網域,並使用 Convert-MsolDomaintoFederated -DomainName <your domain> 對其進行轉換,則會收到下列錯誤。

顯示在 PowerShell 中嘗試以

如果您嘗試加入 -SupportMultipleDomain 參數,將會收到下列錯誤:

顯示新增

單單嘗試針對原始網域執行 Update-MsolFederatedDomain -DomainName <your domain> -SupportMultipleDomain,也會產生錯誤。

同盟錯誤

使用下列步驟來加入其他最上層網域。 若已加入網域且未使用 -SupportMultipleDomain 參數,請從移除並更新原始網域的步驟開始。 若尚未加入頂層網域,則可從使用 Microsoft Entra Connect 的 PowerShell 加入網域的步驟開始。

請使用下列步驟來移除 Microsoft Online 信任,然後更新您的原始網域。

  1. 在 AD FS 同盟伺服器上,開啟 [AD FS 管理]
  2. 展開左側的 [信任關係] 和 [信賴憑證者信任]
  3. 刪除右側的 Microsoft Office 365 身分識別平台項目。 移除 Microsoft Online
  4. 在已安裝 Azure AD 模組的電腦上執行下列 PowerShell:$cred=Get-Credential
  5. 輸入要同盟之 Microsoft Entra 網域的混合式身分識別管理員使用者名稱和密碼。
  6. 在 PowerShell 中,輸入 Connect-MsolService -Credential $cred
  7. 在 PowerShell 中,輸入 Update-MSOLFederatedDomain -DomainName <Federated Domain Name> -SupportMultipleDomain。 此更新適用於原始網域。 所以使用上述網域後,它將會成為:Update-MsolFederatedDomain -DomainName bmcontoso.com -SupportMultipleDomain

使用下列步驟以透過 PowerShell 加入新的最上層網域

  1. 在已安裝 Azure AD 模組的電腦上執行下列 PowerShell:$cred=Get-Credential
  2. 輸入要同盟之 Microsoft Entra 網域的混合式身分識別管理員使用者名稱和密碼
  3. 在 PowerShell 中輸入 Connect-MsolService -Credential $cred
  4. 在 PowerShell 中輸入 New-MsolFederatedDomain –SupportMultipleDomain –DomainName

使用下列步驟,以透過 Microsoft Entra Connect 新增新的頂層網域。

  1. 從桌面或 [開始] 功能表啟動 Microsoft Entra Connect
  2. 選擇 [新增其他 Microsoft Entra 網域]顯示已選取 [新增其他 Microsoft Entra 網域] 之 [其他工作] 頁面的螢幕擷取畫面。
  3. 輸入您的 Microsoft Entra ID 和 Active Directory 認證
  4. 選取要設定同盟的第二個網域。 新增其他 Microsoft Entra 網域
  5. 按一下 [安裝]

確認新的最上層網域

藉由使用 PowerShell 命令 Get-MsolDomainFederationSettings -DomainName <your domain>,您可以檢視更新的 IssuerUri。 下列螢幕擷取畫面會顯示已在原始網域 http://bmcontoso.com/adfs/services/trust 上更新同盟設定

此外,已將新網域上的 IssuerUri 設定為 https://bmcontoso.com/adfs/services/trust

對於子網域的支援

在加入子網域時,根據 Microsoft Entra ID 處理網域的方式,子網域將會繼承父項的設定。 所以,IssuerUri 需要與父項相符。

因此,假設我有 bmcontoso.com,並接著加入 corp.bmcontoso.com。 來自 corp.bmcontoso.com 之使用者的 IssuerUri 必須是 http://bmcontoso.com/adfs/services/trust。 不過,針對 Microsoft Entra ID 所實作的標準規則,會產生以簽發者作為 http://corp.bmcontoso.com/adfs/services/trust 的權杖,這不符合網域的必要值,且驗證會失敗。

如何啟用對於子網域的支援

為了解決此行為,需要更新 Microsoft Online 的 AD FS 信賴憑證者信任。 若要這樣做,您必須設定自訂宣告規則,以使其在建構自訂簽發者值時能夠從使用者的 UPN 尾碼移除任何子網域。

使用下列宣告:

c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, "^.*@([^.]+\.)*?(?<domain>([^.]+\.?){2})$", "http://${domain}/adfs/services/trust/"));

[!注意] 規則運算式中的最後一個數字會設定您根網域中的父網域數目。 由於此處使用的是 bmcontoso.com,因此必須有兩個父網域。 如果要保留三個父系網域 (亦即 corp.bmcontoso.com),則數字就會是三。 最後可以指出一個範圍,系統會進行比對來符合網域數目上限。 "{2,3}" 將比對兩到三個網域 (亦即 bmfabrikam.com 和 corp.bmcontoso.com)。

使用下列步驟來加入自訂宣告,以支援子網域。

  1. 開啟 [AD FS 管理]
  2. 以滑鼠右鍵按一下 Microsoft Online RP 信任,然後選擇 [編輯宣告規則]
  3. 選取第三個宣告規則並取代 編輯宣告
  4. 取代目前的宣告:
c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, ".+@(?<domain>.+)","http://${domain}/adfs/services/trust/"));

取代為

c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, "^.*@([^.]+\.)*?(?<domain>([^.]+\.?){2})$", "http://${domain}/adfs/services/trust/"));

取代宣告

  1. 按一下 [確定]。 按一下 [套用]。 按一下 [確定]。 關閉 [AD FS 管理]。

下一步

安裝 Microsoft Entra Connect 後,您可以驗證安裝和指派授權

如須深入了解在安裝期間啟用的功能,請參閱自動升級防止意外刪除,以及 Microsoft Entra Connect Health

深入了解這些常見主題︰排程器和如何觸發同步處理

深入了解如何整合內部部署身分識別與 Microsoft Entra ID