部署专用 Exchange 混合应用

概述

在混合配置中部署Exchange Server时,“闲/忙”、“邮件提示”和“照片”等功能在Exchange Server和Exchange Online之间可用,为用户提供无缝体验。 首次运行 混合配置向导 (HCW) 时,会自动配置这些功能。

若要启用混合功能使用,Exchange Server利用具有Exchange Online的共享服务主体进行安全通信。 HCW 将当前 身份验证证书 从 Exchange 组织上传到共享服务主体,以简化此过程。

Exchange Online 版 Exchange Web Services 停用博客文章中所述,Exchange Web Services (EWS) 将于 2026 年 10 月在 Exchange Online 针对非Microsoft (第三方) 应用程序和服务完全弃用。 在Exchange Online篇与安全相关的汇报博客文章中,我们宣布,我们还将从我们自己的 (第一方) 应用和服务中删除 EWS 依赖项,预计此更改将在 2026 年 10 月之前进行。

混合配置中使用的Exchange Server受此更改的影响,因为它使用Exchange Online (第一方) 中的共享服务主体。 为了适应此更改,Exchange Server在今年晚些时候的混合方案中将 EWS API 调用替换为基于 REST 的图形 API调用。 此设计更改涉及多个步骤,第一步是在 Microsoft Entra ID 中使用单独的应用程序,而不是共享服务主体。

本文档概述了在Entra ID中为 Exchange 混合配置创建专用 Exchange 应用程序(作为更新设计一部分)所需的步骤。 创建并配置专用 Exchange 应用程序后,Exchange Server继续使用 EWS。 将改用基于 REST 的图形 API作为 EWS 的替代品,并将通过预计于今年晚些时候发布的更新进行。

先决条件

在配置和使用专用 Exchange 混合应用程序之前,必须先使用混合配置向导设置 经典完全 混合或 新式完全 混合。

从以下Exchange Server版本开始,支持专用 Exchange 混合应用程序功能:

版本 内部版本号
Exchange Server SE RTM 15.2.2562.17
Exchange Server 2019 CU15,2025 年 4 月胡 15.2.1748.24
Exchange Server 2019 CU14,2025 年 4 月胡 15.2.1544.25
Exchange Server 2016 CU23,2025 年 4 月胡 15.1.2507.55

Microsoft提供了一个脚本,用于在 Entra ID 中创建专用的 Exchange 混合应用程序并配置该功能。 有两种不同的方案可以执行脚本,每个方案都有自己的一组先决条件。 本文档的 “配置” 部分介绍了这些模式。

一体的配置模式:

此模式设计简单,适合大多数客户。 它允许简化设置过程,使其非常适合优先于配置的环境。

拆分执行配置模式:

此模式适用于更高级的方案。 如果 Exchange 服务器缺少与图形 API或Entra ID终结点的出站连接,或者Exchange Server管理员没有足够的权限在 Entra ID 中创建和配置应用程序,则此功能非常有用。

如果在非Exchange Server上执行任何步骤,请确保计算机已加入 Exchange 组织所在的同一林。

连接性

该脚本利用Microsoft图形 API在 Microsoft Entra ID 中创建和管理应用程序。 在 中 All-in-one Configuration Mode运行脚本时,执行脚本的系统需要与指定的终结点建立出站连接。 在 中Split Execution Configuration Mode,用于在 Entra ID 中创建或管理应用程序的系统需要对这些终结点的出站访问权限。 应选择租户所在的终结点,例如 Global。 有关详细信息,请参阅国家Microsoft Entra ID终结点和国家Microsoft图形终结点文档。

若要验证服务器是否能够连接到 Graph 和Entra ID终结点,可以使用 Test-NetConnection PowerShell cmdlet。 此示例演示如何使用 Global 终结点验证与以下终结点的连接:

Test-NetConnection -ComputerName login.microsoftonline.com -Port 443
Test-NetConnection -ComputerName graph.microsoft.com -Port 443

权限

用于在 Microsoft Entra ID 中创建应用程序的帐户必须具有以下权限:

最低特权权限 更高特权权限
Application Administrator Global Administrator

有关 Entra ID 中角色的更多详细信息,请参阅Microsoft Entra内置角色文档。

用于配置身份验证服务器对象并创建设置替代以启用 Exchange Server 中的功能的帐户必须在本地组织中具有以下权限:

最低特权权限 更高特权权限
View-Only Configuration
Organization Client Access
Organization Configuration
Organization Management

有关Exchange Server中各种角色的详细信息,请参阅组织管理文档。

若要配置身份验证服务器并创建设置替代,请确保脚本在安装了邮箱角色的服务器上执行,并且内部版本 支持此功能

若要使用脚本重置 keyCredentials 共享服务主体的 ,如 服务主体 Clean-Up 模式 部分所述,请确保运行脚本的帐户具有以下权限:

最低特权权限 更高特权权限
N/A Global Administrator

身份验证证书

身份验证证书是Microsoft Exchange Server中的关键组件,支持各种安全性和身份验证方案。 正确管理身份验证证书对于维护Exchange Server作的安全性和可靠性至关重要。

在专用的 Exchange 混合应用程序用例中,它促进 JSON Web 令牌 (JWT) 基于断言的身份验证,以实现服务器到服务器 (S2S) 通信。 这允许Exchange Server通过显示已签名的 JWT 而不是依赖于密码或交互式登录名进行身份验证。 由受信任的颁发机构颁发和签名的 JWT 包含用于验证Exchange Server标识和权限的声明,从而启用对资源的安全、基于令牌的访问。

提示

可以使用 MonitorExchangeAuthCertificate 脚本来验证 OAuth 证书。 如果需要更新 OAuth 证书,请按照维护Exchange Server OAuth 证书文档中的步骤作。

在本文档所述的某些情况下,需要导出身份验证证书。 请确保不要导出证书的私钥。 若要导出证书的公钥,可以使用以下 PowerShell 脚本。

在此示例中,证书将导出到 C:\AuthCertExport。 如果要将证书导出到其他位置,请将 $exportFilePath 变量修改为所需路径。 确保从提升的 Exchange 命令行管理程序 (EMS) 运行脚本:

# Change the path if you want to export the certificates to a different location
$exportFilePath = "C:\AuthCertExport"

$authConfig = Get-AuthConfig

New-Item -Type Directory -Path C:\AuthCertExport -Force | Out-Null

if (-not([System.String]::IsNullOrEmpty($authConfig.CurrentCertificateThumbprint))) {
    $thumbprint = $authConfig.CurrentCertificateThumbprint
    Write-Host "[+] Auth Certificate thumbprint: $thumbprint"

    try {
        $currentAuthCertificate = Get-ChildItem -Path Cert:\LocalMachine\My\$thumbprint
        Export-Certificate -Cert $currentAuthCertificate -FilePath "$exportFilePath\$thumbprint.cer" -Type CERT | Out-Null
        Write-Host "[+] Certificate was successfully exported to: $exportFilePath"
    } catch {
        Write-Host "[+] We hit the following exception: $_" -ForegroundColor Red
    }
}

if (-not([System.String]::IsNullOrEmpty($authConfig.NextCertificateThumbprint))) {
    $thumbprint = $authConfig.NextCertificateThumbprint
    Write-Host "[+] Next Auth Certificate thumbprint: $thumbprint"

    try {
        $currentAuthCertificate = Get-ChildItem -Path Cert:\LocalMachine\My\$thumbprint
        Export-Certificate -Cert $currentAuthCertificate -FilePath "$exportFilePath\$thumbprint.cer" -Type CERT | Out-Null
        Write-Host "[+] Certificate was successfully exported to: $exportFilePath"
    } catch {
        Write-Host "[+] We hit the following exception: $_" -ForegroundColor Red
    }
}

脚本所做的更改

ConfigureExchangeHybridApplication.ps1 脚本根据所选选项执行各种作。 这些作包括配置和启用专用 Exchange 混合应用程序功能,或删除或修改现有Exchange Online服务主体。 本部分概述了脚本执行的特定作。

CreateApplication

  • 在 Entra ID 中创建名称ExchangeServerApp-{Guid of the organization}为的新应用程序
  • 在 Entra ID 中分配用于以应用程序所有者身份运行脚本的用户
  • full_access_as_app EWS API 权限 (分配在近期内替换为图形 API权限)
  • 授予租户范围的管理员同意
    • 这需要在脚本的运行时进行确认
    • 如果未授予租户范围的管理员同意,则脚本不会通过设置替代启用该功能

UpdateCertificate

  • 在 Entra ID 中将当前身份验证证书上传到应用程序
  • 将新的下一个身份验证证书 ((如果存在) )上传到Entra ID中的应用程序
  • 从应用程序中删除已过期的任何证书

ConfigureAuthServer

  • EvoSTS更新 或 EvoSTS - {Guid} 身份验证服务器对象
    • ApplicationIdentifierappId Entra ID 中应用程序的 设置为
    • 将 SMTP 远程路由域添加到 DomainName 属性

ConfigureTargetSharingEpr

  • 标识在 Exchange Server 和 Exchange Online 之间配置的任何启用OrganizationRelationship
  • 使用自动发现查询 Exchange Web Services (EWS) 终结点
  • TargetSharingEpr将 设置为自动发现返回的 EWS 终结点

EnableExchangeHybridApplicationOverride

  • 如果脚本在一体的配置模式下运行
    • 验证 Entra ID 中的应用程序是否具有正确的 API 权限和租户范围的管理员同意
  • 使用以下参数/值创建新的设置替代以启用本地功能:
    • 名称:EnableExchangeHybrid3PAppFeature
    • 元件: Global
    • 部分: ExchangeOnpremAsThirdPartyAppId
    • 参数: Enabled=true
    • 原因: "Created by {Name of the Script} on {timestamp}"

DeleteApplication

  • 删除 Entra ID 中的专用 Exchange 应用程序

ResetFirstPartyServicePrincipalKeyCredentials

  • 从第Office 365 Exchange Online一方应用程序服务主体中删除所有现有keyCredentials
  • 如果指纹是通过 CertificateInformation 参数提供的,则仅清除与指纹匹配的证书以及已过期的所有证书

使用脚本进行配置

Microsoft提供了 ConfigureExchangeHybridApplication.ps1 用于配置专用 Exchange 混合应用程序功能的脚本。 本部分介绍脚本涵盖的最常见方案。 可以在ConfigureExchangeHybridApplication.ps1 脚本文档中找到脚本及其参数的详细 文档

如果本地组织与 多个租户 (1:N) 存在混合关系,则需要多次运行脚本。 每次使用要为其配置专用 Exchange 混合应用程序功能的租户中的帐户。 这可确保脚本在每个租户中创建并配置应用程序。

根据组织的规模,专用 Exchange 混合应用程序配置可能需要长达 60 分钟才能由负责任的Exchange Server进程识别。 在此期间,你可能会注意到闲/忙、邮件提示和照片等功能暂时不可用。

一体的配置模式

对于大多数客户, All-in-one Configuration Mode 建议使用 配置此功能的方法。 若要使用此模式,请在具有出站连接的邮箱服务器上运行脚本,如 连接 部分所述。 服务器必须运行支持专用 Exchange 混合应用程序功能的Exchange Server内部版本。 此外,请确保具有所需的 权限

重要

一元配置模式与 Windows Server Core 不兼容。 如果使用 Windows Server Core,请按照拆分执行配置模式部分中的说明进行作。

.\ConfigureExchangeHybridApplication.ps1 -FullyConfigureExchangeHybridApplication

默认情况下,脚本针对 Microsoft 365 Worldwide 云运行。 如果 Microsoft 365 租户位于其他云中,请使用 AzureEnvironment 参数。 在以下示例中,应用程序是在云中创建的 Microsoft 365 operated by 21Vianet

.\ConfigureExchangeHybridApplication.ps1 -FullyConfigureExchangeHybridApplication -AzureEnvironment "ChinaCloud"

拆分执行配置模式

例如,如果邮箱服务器没有出站连接Microsoft Graph 或Entra ID,则可以通过多个步骤运行脚本。 其中一些步骤不需要在 Exchange 服务器上执行。

首先,导出身份验证证书 (,如果可用,下一个身份验证证书) 公钥。 使用“ 身份验证证书 ”部分中提供的脚本执行导出。 不要导出证书的私钥。

接下来,将导出的证书复制到具有出站连接的计算机,如 连接 部分所述。 在该计算机上,运行脚本以在 Entra ID 中创建应用程序。 该脚本显示 Tenant ID 新创建应用程序的 和 appId 。 请务必记下这两个值,因为后续步骤中需要用到它们:

.\ConfigureExchangeHybridApplication.ps1 -CreateApplication -UpdateCertificate -CertificateMethod "File" -CertificateInformation "C:\Certificates\CurrentAuthCertificate.cer"

如果在上一步中导出了多个身份验证证书,则必须运行脚本两次。 第 CreateApplication 二次运行不需要此步骤:

.\ConfigureExchangeHybridApplication.ps1 -UpdateCertificate -CertificateMethod "File" -CertificateInformation "C:\Certificates\NewNextAuthCertificate.cer"

必须在邮箱服务器上执行此步骤。 在此过程中,配置身份验证服务器,更新Exchange Server与Exchange Online之间的现有组织关系,并启用专用的 Exchange 混合应用程序功能。 需要提供租户的 ID、appIdEntra ID 中新建应用程序的 ID 以及远程路由域:

.\ConfigureExchangeHybridApplication.ps1 -ConfigureAuthServer -ConfigureTargetSharingEpr -EnableExchangeHybridApplicationOverride -CustomAppId "<appId>" -TenantId "<tenantId>" -RemoteRoutingDomain "<organization>.mail.onmicrosoft.com"

更新证书模式

首次配置和启用专用 Exchange 混合应用程序功能时,不需要执行本部分中的步骤。 如果身份验证证书过期或已替换,则这些步骤可用于更新证书。 有关维护身份验证证书的详细信息,请参阅维护 Exchange Server OAuth 证书文档。

如果邮箱服务器具有出站连接,如 连接 部分所述,请运行脚本,如下所示:

.\ConfigureExchangeHybridApplication.ps1 -UpdateCertificate

如果邮箱服务器与 Microsoft Graph 和 Entra ID 没有出站连接,请按照拆分执行配置模式部分中的说明导出新的身份验证证书。 将证书复制到具有出站连接 (不一定是 Exchange 服务器) 的计算机,如 连接 部分所述。 然后,按如下所示运行脚本:

.\ConfigureExchangeHybridApplication.ps1 -UpdateCertificate -CertificateMethod "File" -CertificateInformation "C:\Certificates\NewAuthCertificate.cer"

删除应用程序模式

配置和启用专用 Exchange 混合应用程序功能时,不需要此步骤。 但是,如果需要,可以使用以下命令删除在 Entra ID 中创建的应用程序。 可以在非 Exchange 服务器上执行此命令。

通过ConfigureExchangeHybridApplication.ps1脚本删除应用程序不会还原环境中的 Exchange 混合应用程序配置。 如果需要切换回,请按照本文档 如何从专用 Exchange 混合应用程序回滚 部分中的步骤进行作。

若要在 Entra ID (删除应用程序,请仅在回滚更改或排查Entra ID) 中新应用程序的创建问题时执行此作,请运行脚本,如下所示:

.\ConfigureExchangeHybridApplication.ps1 -DeleteApplication

服务主体 Clean-Up 模式

执行初始配置以创建和启用专用 Exchange 混合应用程序功能时,不需要本部分中的命令。

警告

如果仍然有 Exchange 服务器运行的 Exchange 内部版本早于支持此功能的 Exchange 生成部分中提到的版本,请不要清除keyCredentials第一方服务主体的 。 这样做会破坏这些服务器的丰富共存混合功能!

作为以前的 Exchange 混合设计的一部分,混合配置向导 (HCW) 将当前 身份验证证书 从 Exchange 组织上传到共享服务主体。 不再需要此步骤,因为身份验证证书现在已上传到专用 Exchange 混合应用程序。

启用专用 Exchange 混合应用程序功能并确保所有 Exchange 服务器都运行 支持此功能的 Exchange 版本后,建议清理以前上传到共享服务主体的证书。 可以在非 Exchange 服务器上执行命令。

请注意,如果在配置专用 Exchange 混合应用程序功能后运行 HCW ,并选择“Oauth”、“组织内部连接器和组织关系 ”配置选项,则身份验证证书将再次上传到共享服务主体。

若要清除所有 keyCredentials 第一方服务主体,请运行脚本,如下所示:

.\ConfigureExchangeHybridApplication.ps1 -ResetFirstPartyServicePrincipalKeyCredentials

若要从 keyCredentials中清除特定证书和所有过期的证书,请运行脚本,如下所示,并提供要删除的证书的指纹:

.\ConfigureExchangeHybridApplication.ps1 -ResetFirstPartyServicePrincipalKeyCredentials -CertificateInformation "1234567890ABCDEF1234567890ABCDEF12345678"

验证 OAuth 连接状态

若要验证 OAuth 身份验证在 Exchange Server 和 Exchange Online 之间是否正常运行,请使用 Test-OAuthConnectivity cmdlet:

Test-OAuthConnectivity -Service EWS -TargetUri https://outlook.office365.com -Mailbox "<OnPremisesMailboxSmtpAddress>" | Format-List

ResultType如果 为 Success ,并且 Detail 节包含appId专用 Exchange 混合应用程序的 ,则表示Exchange Server已成功获取 OAuth 令牌。 请注意,OAuth 请求由运行 Exchange 命令行管理程序 (EMS) 会话的服务器发起。 如果通过 -Mailbox 参数指定的邮箱驻留在不支持专用 Exchange 混合应用但 EMS 主机服务器支持的其他服务器上,则 ResultType 仍将显示 Success。 此行为是设计使然。

审核 Entra ID 中的 Exchange 混合应用程序使用情况

配置专用 Exchange 混合应用程序并在Exchange Server上启用该功能后,可以通过 Entra ID Sign-in logs审核其使用情况。 请按照下列步骤操作:

  1. 登录到Entra ID门户:

    导航到Entra ID门户,并使用凭据登录。

  2. 访问Microsoft Entra ID:

    在门户中,选择或搜索 Microsoft Entra ID

  3. 导航到登录日志:

    在导航窗格中,转到Monitoring并选择 。Sign-in logs

  4. 查看服务主体登录:

    接下来,选择 以查看 Service principal sign-ins 详细日志。

下图演示了成功的登录请求:

单击条目时,浮出控件将 Activity Details: Sign-ins 打开,提供有关登录活动的详细信息:

限制对专用 Exchange 混合应用程序服务主体的访问

某些组织可能希望将专用 Exchange 混合应用程序服务主体的访问限制为Exchange Server使用的已知公共 IP 范围的子集。 这可以通过对 工作负载标识使用条件访问来实现。 此功能将条件访问策略的支持扩展到组织拥有的服务主体。 请注意,需要工作负载标识高级许可证才能创建或修改范围限定为服务主体的条件访问策略。 有关详细信息,请访问 Microsoft Entra Workload ID

如何从专用 Exchange 混合应用程序回滚

在专用 Exchange 混合应用程序成为 HCW 中的默认值并且 EWS 已弃用第一方应用程序之前,可以回滚脚本 ConfigureExchangeHybridApplication.ps1 应用的配置。 仅当在配置功能后遇到问题时,才应执行回滚。

第一步,运行 HCW 以重新配置第一方服务主体。 请确保选择 “Oauth”、“组织内部连接器和组织关系 ”选项,因为此设置执行重新配置第一方服务主体所需的步骤。

接下来,删除启用专用 Exchange 混合应用程序功能的设置替代。 为此,请从提升的 Exchange 命令行管理程序 (EMS) 运行以下命令:

Get-SettingOverride | Where-Object {$_.ComponentName -eq "Global" -and $_.SectionName -eq "ExchangeOnpremAsThirdPartyAppId"} | Remove-SettingOverride
Get-ExchangeDiagnosticInfo -Process Microsoft.Exchange.Directory.TopologyService -Component VariantConfiguration -Argument Refresh

若要还原脚本应用的身份验证服务器更改,请从提升的 Exchange 命令行管理程序 (EMS) 运行以下命令:

# Replace this id with the id of your tenant
$tenantId = "123e4567-e89b-12d3-a456-426614174000"

(Get-AuthServer | Where-Object {$_.Name -like "*evoSTS*" -and $_.Realm -eq $tenantId}) | Set-AuthServer -ApplicationIdentifier $null -DomainName $null

最后一步,可以使用脚本ConfigureExchangeHybridApplication.ps1删除在 Entra ID 中创建的应用程序:

.\ConfigureExchangeHybridApplication.ps1 -DeleteApplication

常见问题

可以在混合部署Exchange Server安全更改博客文章中找到常见问题 (常见问题解答) 列表。 回答最重要的问题后,常见问题解答将移至本文档。