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

下列檔提供在與 Microsoft 365 或 Microsoft Entra 網域同盟時,如何使用多個最上層網域和子域的指引。

多個最上層網域支援

使用 Microsoft Entra ID 同盟多個最上層網域需要一些額外的設定,在與一個最上層網域同盟時不需要。

當網域與 Microsoft Entra ID 同盟時,Azure 中的網域上會設定數個屬性。 其中一個重要是IssuerUri。 此屬性是 Microsoft Entra ID 用來識別令牌相關聯之網域的 URI。 URI 不需要解析為任何專案,但必須是有效的 URI。 根據預設,Microsoft Entra ID 會將 URI 設定為內部部署 AD FS 組態中同盟服務標識符的值。

注意

同盟服務標識碼是可唯一識別同盟服務的 URI。 同盟服務是 AD FS 的實例,可作為安全性令牌服務。

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

螢幕快照,顯示 PowerShell 中輸入 「Get-MsolDomainFederation 設定」 命令後的結果。

注意

自 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 命令成功完成的螢幕快照。

查看 bmfabrikam.com 網域的螢幕快照,您可以看到下列設定:

顯示「bmfabrikam.com」網域設定的螢幕快照。

-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 組態,且驗證將會成功。

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

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 識別碼之間的信任

如果您未設定 AD FS 與 Microsoft Entra 識別碼實例之間的同盟信任,您可能需要重新建立此信任。 原因是,當它最初設定時沒有 -SupportMultipleDomain 參數,IssuerUri 會使用預設值來設定。 在下列螢幕快照中,您可以看到IssuerUri 已設定為 https://adfs.bmcontoso.com/adfs/services/trust

如果您已成功在 Microsoft Entra 系統管理中心 新增網域,然後嘗試使用 Convert-MsolDomaintoFederated -DomainName <your domain>轉換它,您會收到下列錯誤。

顯示 PowerShell 中嘗試使用 「Convert-MsolDomaintoFederated」 命令轉換新網域後發生同盟錯誤的螢幕快照。

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

顯示新增 「-SupportMultipleDomain」 參數之後發生同盟錯誤的螢幕快照。

只要嘗試在原始網域上執行 Update-MsolFederatedDomain -DomainName <your domain> -SupportMultipleDomain ,也會導致錯誤。

同盟錯誤

使用下列步驟來新增額外的最上層網域。 如果您已新增網域,但未使用 -SupportMultipleDomain 參數,請從移除和更新原始網域的步驟開始。 如果您尚未新增最上層網域,您可以從使用 Microsoft Entra 的 PowerShell 新增網域的步驟開始 連線。

使用下列步驟來移除 Microsoft Online 信任並更新原始網域。

  1. 在您的 AD FS 同盟伺服器上開啟 AD FS 管理
  2. 在左側,展開 [信任關係 ] 和 [信賴憑證者信任]。
  3. 在右側,刪除 Microsoft Office 365 身分識別平台 專案。 拿掉 Microsoft Online
  4. 在已安裝 Azure AD PowerShell 模組的電腦上,執行下列 PowerShell:$cred=Get-Credential
  5. 針對您同盟的 Microsoft Entra 網域,輸入混合式身分識別 管理員 istrator 的使用者名稱和密碼。
  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 模組的電腦上,執行下列 PowerShell:$cred=Get-Credential
  2. 針對您要與 Microsoft Entra 網域同盟的 Microsoft Entra 網域,輸入混合式身分識別 管理員 istrator 的使用者名稱和密碼
  3. 在 PowerShell 中,輸入 Connect-MsolService -Credential $cred
  4. 在 PowerShell 中,輸入 New-MsolFederatedDomain –SupportMultipleDomain –DomainName

使用下列步驟,使用 Microsoft Entra 連線 新增最上層網域。

  1. 從桌面或開始功能表啟動 Microsoft Entra 連線
  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

Get-MsolDomainFederationSettings

支援子域

當您新增子域時,由於 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/"));
    

    取代宣告

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

下一步

現在您已安裝 Microsoft Entra 連線,您可以確認安裝並指派授權

深入了解這些功能,這些功能已啟用安裝:自動升級防止意外刪除,以及 Microsoft Entra 連線 Health

深入了解這些常見主題: 排程器以及如何觸發同步處理。

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