與 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 屬性擁有相同值。
SupportMultipleDomain 參數
若要解決此限制,您需要新增不同的 IssuerUri,這可以透過使用 -SupportMultipleDomain
參數來達成。 這個參數可搭配下列 Cmdlet 使用:
New-MsolFederatedDomain
Convert-MsolDomaintoFederated
Update-MsolFederatedDomain
Microsoft Entra ID 可透過此參數,根據網域名稱設定 IssuerUri。 IssuerUri 將是 Microsoft Entra ID 中所有目錄中的唯一項目。 使用參數可讓 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>
對其進行轉換,則會收到下列錯誤。
如果您嘗試加入 -SupportMultipleDomain
參數,將會收到下列錯誤:
單單嘗試針對原始網域執行 Update-MsolFederatedDomain -DomainName <your domain> -SupportMultipleDomain
,也會產生錯誤。
使用下列步驟來加入其他最上層網域。 若已加入網域且未使用 -SupportMultipleDomain
參數,請從移除並更新原始網域的步驟開始。 若尚未加入頂層網域,則可從使用 Microsoft Entra Connect 的 PowerShell 加入網域的步驟開始。
請使用下列步驟來移除 Microsoft Online 信任,然後更新您的原始網域。
- 在 AD FS 同盟伺服器上,開啟 [AD FS 管理]。
- 展開左側的 [信任關係] 和 [信賴憑證者信任]。
- 刪除右側的 Microsoft Office 365 身分識別平台 項目。
- 在已安裝 Azure AD 模組的電腦上執行下列 PowerShell:
$cred=Get-Credential
。 - 輸入要同盟之 Microsoft Entra 網域的混合式身分識別管理員使用者名稱和密碼。
- 在 PowerShell 中,輸入
Connect-MsolService -Credential $cred
。 - 在 PowerShell 中,輸入
Update-MSOLFederatedDomain -DomainName <Federated Domain Name> -SupportMultipleDomain
。 此更新適用於原始網域。 所以使用上述網域後,它將會成為︰Update-MsolFederatedDomain -DomainName bmcontoso.com -SupportMultipleDomain
使用下列步驟以透過 PowerShell 加入新的最上層網域
- 在已安裝 Azure AD 模組的電腦上執行下列 PowerShell:
$cred=Get-Credential
。 - 輸入要同盟之 Microsoft Entra 網域的混合式身分識別管理員使用者名稱和密碼
- 在 PowerShell 中輸入
Connect-MsolService -Credential $cred
- 在 PowerShell 中輸入
New-MsolFederatedDomain –SupportMultipleDomain –DomainName
使用下列步驟,以透過 Microsoft Entra Connect 新增新的頂層網域。
- 從桌面或 [開始] 功能表啟動 Microsoft Entra Connect
- 選擇 [新增其他 Microsoft Entra 網域]
- 輸入您的 Microsoft Entra ID 和 Active Directory 認證
- 選取要設定同盟的第二個網域。
- 按一下 [安裝]
確認新的最上層網域
藉由使用 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)。
使用下列步驟來加入自訂宣告,以支援子網域。
- 開啟 [AD FS 管理]
- 以滑鼠右鍵按一下 Microsoft Online RP 信任,然後選擇 [編輯宣告規則]
- 選取第三個宣告規則並取代
- 取代目前的宣告︰
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/"));
- 按一下 [確定] 。 按一下 套用。 按一下 [確定] 。 關閉 [AD FS 管理]。
下一步
安裝 Microsoft Entra Connect 後,您可以驗證安裝和指派授權。
如須深入瞭解在安裝期間啟用的功能,請參閱自動升級、防止意外刪除,以及 Microsoft Entra Connect Health。
深入了解這些常見主題︰排程器和如何觸發同步處理。