共用方式為


與 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。 同盟服務是作為安全權杖服務的 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 中顯示同盟錯誤的螢幕擷取畫面。

支援多個網域參數

若要解決此限制,您需要新增不同的 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