如何配置本地 Exchange Server 以使用混合新式验证

此文章适用于 Microsoft 365 企业版和 Office 365 企业版。

混合新式身份验证 (HMA) 是一种标识管理方法,可提供更安全的用户身份验证和授权,可用于 Exchange 服务器本地混合部署。

启用混合新式身份验证

打开 HMA 需要环境满足以下条件:

  1. 在开始之前,请确保满足先决条件。

  2. 由于许多先决条件对于 Skype for Business 和 Exchange 都是常见的,因此请在混合新式身份验证概述和将其用于本地Skype for Business和 Exchange 服务器的先决条件中查看它们。 在开始本文中的任何步骤之前执行此操作。 有关要插入的链接邮箱的要求。

  3. 将本地 Web 服务 URL 添加为 Microsoft Entra ID (SPN) 的服务主体名称。 如果 Exchange 本地与多个租户处于混合状态,则必须将这些本地 Web 服务 URL 作为 SPN 添加到所有租户的Microsoft Entra ID中,这些租户与本地 Exchange 混合使用。

  4. 确保为 HMA 启用所有虚拟目录

  5. 检查 EvoSTS 身份验证服务器对象

  6. 确保Exchange Server OAuth 证书有效

  7. 确保所有用户标识都与Microsoft Entra ID同步

  8. 在本地 Exchange 中启用 HMA。

注意

你的 Office 版本是否支持 MA? 请参阅 新式身份验证如何适用于 Office 2013 和 Office 2016 客户端应用

警告

不支持通过Microsoft Entra应用程序代理发布Outlook Web App和 Exchange 控制面板。

在 Microsoft Entra ID 中添加本地 Web 服务 URL 作为 SPN

运行命令,以Microsoft Entra SPN 的形式分配本地 Web 服务 URL。 在身份验证和授权期间,客户端计算机和设备使用 SPN。 所有可用于从本地连接到Microsoft Entra ID的 URL 都必须在Microsoft Entra ID (包括内部和外部命名空间) 注册。

  1. 首先,在Microsoft Exchange Server运行以下命令:

    Get-MapiVirtualDirectory -ADPropertiesOnly | fl server,*url*
    Get-WebServicesVirtualDirectory -ADPropertiesOnly | fl server,*url*
    Get-ClientAccessService | fl Name, AutodiscoverServiceInternalUri
    Get-OABVirtualDirectory -ADPropertiesOnly | fl server,*url*
    Get-AutodiscoverVirtualDirectory -ADPropertiesOnly | fl server,*url*
    Get-OutlookAnywhere -ADPropertiesOnly | fl server,*hostname*
    

    确保客户端可能连接到的 URL 在 Microsoft Entra ID 中列为 HTTPS 服务主体名称。 如果本地 Exchange 与多个租户处于混合状态,则应将这些 HTTPS SPN 添加到与本地 Exchange 混合的所有租户的Microsoft Entra ID中。

  2. 安装 Microsoft Graph PowerShell 模块:

    Install-Module Microsoft.Graph -Scope AllUsers
    
  3. 接下来,按照这些说明连接到Microsoft Entra ID。 若要同意所需的权限,请运行以下命令:

    Connect-MgGraph -Scopes Application.Read.All, Application.ReadWrite.All
    
  4. 对于与 Exchange 相关的 URL,请键入以下命令:

    Get-MgServicePrincipal -Filter "AppId eq '00000002-0000-0ff1-ce00-000000000000'" | select -ExpandProperty ServicePrincipalNames
    

    记下 (和屏幕截图,以便以后) 此命令的输出进行比较,该输出应包括 https://*autodiscover.yourdomain.com*https://*mail.yourdomain.com* URL,但主要包含以 00000002-0000-0ff1-ce00-000000000000/开头的 SPN。 https://如果缺少本地的 URL,则应将这些特定记录添加到此列表中。

  5. 如果在此列表中看不到内部和外部 MAPI/HTTPEWS、、 ActiveSyncOABAutodiscover 记录,则必须添加它们。 使用以下命令添加缺少的所有 URL:

    重要

    在我们的示例中,将添加的 URL 为 mail.corp.contoso.comowa.contoso.com。 请确保它们已替换为环境中配置的 URL。

    $x = Get-MgServicePrincipal -Filter "AppId eq '00000002-0000-0ff1-ce00-000000000000'"
    $ServicePrincipalUpdate = @(
    "https://mail.corp.contoso.com/","https://owa.contoso.com/"
    )
    Update-MgServicePrincipal -ServicePrincipalId $x.Id -ServicePrincipalNames $ServicePrincipalUpdate
    
  6. 再次运行步骤 2 中的 Get-MsolServicePrincipal 命令并查看输出,验证是否已添加新记录。 将之前的列表/屏幕截图与新的 SPN 列表进行比较。 还可以为记录拍摄新列表的屏幕截图。 如果成功,将在列表中看到两个新 URL。 按照我们的示例,SPN 列表现在包括特定的 URL https://mail.corp.contoso.comhttps://owa.contoso.com

验证是否已正确配置虚拟目录

现在,通过运行以下命令,验证 Outlook 可能使用的所有虚拟目录是否在 Exchange 中正确启用 OAuth:

Get-MapiVirtualDirectory | FL server,*url*,*auth*
Get-WebServicesVirtualDirectory | FL server,*url*,*oauth*
Get-OABVirtualDirectory | FL server,*url*,*oauth*
Get-AutoDiscoverVirtualDirectory | FL server,*oauth*

检查输出以确保在每个 VDirs 上都启用了 OAuth ,它看起来类似于以下 (并且要查看的关键是“OAuth”) :

Get-MapiVirtualDirectory | fl server,*url*,*auth*

Server                        : EX1
InternalUrl                   : https://mail.contoso.com/mapi
ExternalUrl                   : https://mail.contoso.com/mapi
IISAuthenticationMethods      : {Ntlm, OAuth, Negotiate}
InternalAuthenticationMethods : {Ntlm, OAuth, Negotiate}
ExternalAuthenticationMethods : {Ntlm, OAuth, Negotiate}

如果任何服务器和四个虚拟目录中的任何一个都缺少 OAuth,则需要使用相关命令添加它,然后再继续 (Set-MapiVirtualDirectorySet-WebServicesVirtualDirectorySet-OABVirtualDirectorySet-AutodiscoverVirtualDirectory) 。

确认 EvoSTS 身份验证服务器对象存在

对于最后一个命令,请返回到本地 Exchange 命令行管理程序。 现在可以验证本地是否具有 evoSTS 身份验证提供程序的条目:

Get-AuthServer | where {$_.Name -like "EvoSts*"} | ft name,enabled

输出应显示具有 GUID 的名称 EvoSts 的 AuthServer,并且“已启用”状态应为 True。 否则,应下载并运行最新版本的混合配置向导。

注意

如果本地 Exchange 与 多个租户处于混合状态,则输出应显示与本地 Exchange 混合的每个租户的名称 EvoSts - {GUID} 的 AuthServer,并且所有这些 AuthServer 对象的 “已启用” 状态应为 True

重要

如果在环境中运行 Exchange 2010,则不会创建 EvoSTS 身份验证提供程序。

启用 HMA

在本地 Exchange 命令行管理程序中运行以下命令,将 <命令行中的 GUID> 替换为运行的最后一个命令的输出中的 GUID:

Set-AuthServer -Identity "EvoSTS - <GUID>" -IsDefaultAuthorizationEndpoint $true
Set-OrganizationConfig -OAuth2ClientProfileEnabled $true

注意

在旧版混合配置向导中,EvoSts AuthServer 被简单地命名为 EvoSTS,没有附加 GUID。 无需执行任何操作,只需修改前面的命令行以通过删除命令的 GUID 部分来反映这一点:

Set-AuthServer -Identity EvoSTS -IsDefaultAuthorizationEndpoint $true

如果 Exchange 本地版本是 Exchange 2016 (CU18 或更高版本,) 或 Exchange 2019 (CU7 或更高版本) 并且混合配置了 2020 年 9 月之后下载的 HCW,请在本地 Exchange 命令行管理程序中运行以下命令:

Set-AuthServer -Identity "EvoSTS - {GUID}" -DomainName "Tenant Domain" -IsDefaultAuthorizationEndpoint $true
Set-OrganizationConfig -OAuth2ClientProfileEnabled $true

注意

如果 Exchange 本地与 多个租户处于混合中,则 Exchange 本地中存在多个 AuthServer 对象,其域对应于每个租户。 IsDefaultAuthorizationEndpoint 标志应设置为 true (使用 IsDefaultAuthorizationEndpoint cmdlet) 这些 AuthServer 对象中的任何一个。 无法为所有 Authserver 对象将此标志设置为 true,并且即使其中一个 AuthServer 对象的 IsDefaultAuthorizationEndpoint 标志设置为 true,也会启用 HMA。

注意

对于 DomainName 参数,请使用租户域值,其格式 contoso.onmicrosoft.com通常为 。

验证

启用 HMA 后,客户端的下一次登录将使用新的身份验证流。 仅打开 HMA 不会触发任何客户端的重新身份验证,Exchange 可能需要一段时间才能选取新设置。

在右键单击 Outlook 客户端的图标的同时,还应按住 Ctrl 键,同时 (Windows 通知托盘) 并选择“ 连接状态”。 根据 AuthN 类型的 查找客户端的 SMTP 地址,该类型 Bearer\*表示 OAuth 中使用的持有者令牌。

注意

需要使用 HMA 配置Skype for Business? 需要两篇文章:一篇列出了 支持的拓扑,一篇介绍如何 执行配置

为 OWA 和 ECP 启用混合新式身份验证

现在还可以为 OWAECP启用混合新式身份验证。 在继续之前,请确保满足 先决条件

OWAECP启用混合新式身份验证后,尝试登录 OWAECP 的每个最终用户和管理员将首先重定向到Microsoft Entra ID身份验证页。 身份验证成功后,用户将被重定向到 OWAECP

为 OWA 和 ECP 启用混合新式身份验证的先决条件

若要为 OWAECP启用混合新式身份验证,必须将所有用户标识与 Microsoft Entra ID 同步。 此外,在完成进一步的配置步骤之前,还必须在本地Exchange Server和Exchange Online之间建立 OAuth 设置。

已运行混合配置向导 (HCW) 配置混合的客户将具有 OAuth 配置。 如果之前未配置 OAuth,可以通过运行 HCW 或按照在 Exchange 和 Exchange Online 组织之间配置 OAuth 身份验证文档中所述的步骤来完成此操作。

建议在进行任何更改之前记录 OwaVirtualDirectoryEcpVirtualDirectory 设置。 如果配置该功能后出现任何问题,本文档将使你能够还原原始设置。

重要

所有服务器都必须至少安装了 Exchange Server 2019 CU14 更新。 他们还必须运行 Exchange Server 2019 CU14 2024 年 4 月 HU 或更高版本的更新。

为 OWA 和 ECP 启用混合新式身份验证的步骤

  1. OWA查询在本地 Exchange Server 配置的 和 ECP URL。 这一点很重要,因为它们必须作为回复 URL 添加到Microsoft Entra ID:

    Get-OwaVirtualDirectory -ADPropertiesOnly | fl name, *url*
    Get-EcpVirtualDirectory -ADPropertiesOnly | fl name, *url*
    
  2. 安装 Microsoft Graph PowerShell 模块(如果尚未安装):

    Install-Module Microsoft.Graph -Scope AllUsers
    
  3. 按照这些说明连接到Microsoft Entra ID。 若要同意所需的权限,请运行以下命令:

    Connect-Graph -Scopes User.Read, Application.ReadWrite.All
    
  4. 指定 和 OWAECP URL:

    $replyUrlsToBeAdded = @(
    "https://YourDomain.contoso.com/owa","https://YourDomain.contoso.com/ecp"
    )
    
  5. 使用回复 URL 更新应用程序:

    $servicePrincipal = Get-MgServicePrincipal -Filter "AppId eq '00000002-0000-0ff1-ce00-000000000000'"
    $servicePrincipal.ReplyUrls += $replyUrlsToBeAdded
    Update-MgServicePrincipal -ServicePrincipalId $servicePrincipal.Id -AppId "00000002-0000-0ff1-ce00-000000000000" -ReplyUrls $servicePrincipal.ReplyUrls
    
  6. 验证是否已成功添加回复 URL:

    (Get-MgServicePrincipal -Filter "AppId eq '00000002-0000-0ff1-ce00-000000000000'").ReplyUrls
    
  7. 若要启用Exchange Server本地执行混合新式身份验证的功能,请按照启用 HMA 部分中概述的步骤进行操作。

  8. (可选) 仅当使用 下载域 时才需要:

    Create新的全局设置替代,方法是从提升的 Exchange 命令行管理程序 (EMS) 运行以下命令。 在一个Exchange Server运行以下命令:

    New-SettingOverride -Name "OWA HMA Download Domain Support" -Component "OAuth" -Section "OAuthIdentityCacheFixForDownloadDomains" -Parameters ("Enabled=true") -Reason "Enable support for OWA HMA when Download Domains are in use"
    Get-ExchangeDiagnosticInfo -Process Microsoft.Exchange.Directory.TopologyService -Component VariantConfiguration -Argument Refresh
    Restart-Service -Name W3SVC, WAS -Force
    
  9. (可选) 仅在 Exchange 资源林拓扑 方案中需要:

    将以下键添加到 <appSettings> 文件的节点 <ExchangeInstallPath>\ClientAccess\Owa\web.config 。 对每个Exchange Server执行此操作:

    <add key="OAuthHttpModule.ConvertToSidBasedIdentity" value="true"/>
    <add key="OAuthHttpModule.UseMasterAccountSid" value="true"/>
    

    Create新的全局设置替代,方法是从提升的 Exchange 命令行管理程序 (EMS) 运行以下命令。 在一个Exchange Server运行以下命令:

    New-SettingOverride -Name "OWA HMA AFRF Support" -Component "OAuth" -Section "OwaHMAFixForAfRfScenarios" -Parameters ("Enabled=true") -Reason "Enable support for OWA HMA in AFRF scenarios"
    Get-ExchangeDiagnosticInfo -Process Microsoft.Exchange.Directory.TopologyService -Component VariantConfiguration -Argument Refresh
    Restart-Service -Name W3SVC, WAS -Force
    
  10. 若要为 OWAECP启用混合新式身份验证,必须先对这些虚拟目录禁用任何其他身份验证方法。 对每个OWA目录和ECP每个Exchange Server虚拟目录运行以下命令:

    重要

    请务必按给定的顺序执行这些命令。 否则,运行命令时将看到错误消息。 运行这些命令后,登录 OWAECP 停止工作,直到激活这些虚拟目录的 OAuth 身份验证。

    此外,请确保同步所有帐户,尤其是用于管理Microsoft Entra ID的帐户。 否则,登录名将停止工作,直到它们同步。 请注意,帐户(如内置管理员)不会与 Microsoft Entra ID因此,一旦启用了 OWA 和 ECP 的 HMA,将无法用于管理。 这是由于 isCriticalSystemObject 属性,该属性对于某些帐户设置为 TRUE

    Get-OwaVirtualDirectory -Server <computername> | Set-OwaVirtualDirectory -AdfsAuthentication $false –BasicAuthentication $false –FormsAuthentication $false –DigestAuthentication $false
    Get-EcpVirtualDirectory -Server <computername> | Set-EcpVirtualDirectory -AdfsAuthentication $false –BasicAuthentication $false –FormsAuthentication $false –DigestAuthentication $false
    
  11. OWAECP 虚拟目录启用 OAuth。 对每个OWA目录和ECP每个Exchange Server虚拟目录运行以下命令:

    重要

    请务必按给定的顺序执行这些命令。 否则,运行命令时将看到错误消息。

    Get-EcpVirtualDirectory -Server <computername> | Set-EcpVirtualDirectory -OAuthAuthentication $true
    Get-OwaVirtualDirectory -Server <computername> | Set-OwaVirtualDirectory -OAuthAuthentication $true
    

将混合新式身份验证与 Outlook for iOS 和 Android 配合使用

如果你是 TCP 443 上使用 Exchange Server 的本地客户,请允许来自以下 IP 范围的网络流量:

52.125.128.0/20
52.127.96.0/23

这些 IP 地址范围也记录在 Office 365 IP 地址和 URL Web 服务中未包括的其他终结点中。

从 Office 365 专用/ITAR 过渡到 vNext 的新式身份验证配置要求