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

概述

Microsoft Exchange Server 中的混合新式身份验证 (HMA) 是一项功能,允许用户使用从云获取的授权令牌访问托管在本地的邮箱。

HMA 使 Outlook 可以从 Microsoft Entra ID 获取访问和刷新 OAuth 令牌,无论是直接用于密码哈希同步还是 Pass-Through 身份验证标识,或者从其自己的安全令牌服务 (STS) 联合标识。 Exchange 本地接受这些令牌并提供邮箱访问权限。 获取这些令牌和所需凭据的方法由标识提供者 (iDP) 的功能决定,其范围从简单的用户名和密码到更复杂的方法(如证书、电话身份验证或生物识别方法)。

要使 HMA 正常工作,用户的标识必须存在于 Microsoft Entra ID 中,并且需要一些配置(由 Exchange 混合配置向导 (HCW) 处理)。

与 NTLM 等旧式身份验证方法相比,HMA 具有多种优势。 它利用基于云的身份验证的强大功能,提供更安全、更灵活的身份验证方法。 与 NTLM 不同,NTLM 依赖于质询响应机制,不支持新式身份验证协议,HMA 使用 OAuth 令牌,这些令牌更安全,并且互操作性更好。

HMA 是一项功能强大的功能,利用基于云的身份验证的强大功能,可增强访问本地应用程序的灵活性和安全性。 它比旧式身份验证方法有了重大改进,增强了安全性、灵活性和用户便利性。

配置和启用混合新式身份验证要遵循的步骤

若要 (HMA) 启用混合新式身份验证,必须确保组织满足所有必要的先决条件。 此外,应确认 Office 客户端是否与新式身份验证兼容。 有关详细信息,请参阅新 式身份验证如何适用于 Office 2013 和 Office 2016 客户端应用的文档。

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

  2. 将本地 Web 服务 URL 添加到Microsoft Entra ID。 URL 必须添加为 Service Principal Names (SPNs)。 如果 Exchange Server 设置与 多个租户处于混合状态,则必须将这些本地 Web 服务 URL 作为 SPN 添加到所有租户的 Microsoft Entra ID 中,这些租户与本地 Exchange Server 混合使用。

  3. 确保为 HMA 启用所有虚拟目录。 如果要 为 Outlook 网页版配置混合新式身份验证 (OWA) 和 Exchange 控制面板 (ECP) ,请务必同时验证各自的目录。

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

  5. 确保 Exchange Server OAuth 证书 有效。 可以使用 MonitorExchangeAuthCertificate 脚本 来验证 OAuth 证书的有效性。 如果过期,该脚本会协助续订过程。

  6. 确保所有用户标识都与 Microsoft Entra ID 同步,尤其是用于管理的所有帐户。 否则,登录名将停止工作,直到它们同步。 帐户(如内置管理员)永远不会与 Microsoft Entra ID 同步,因此,在启用 HMA 后,不能在任何 OAuth 登录名上使用。 此行为是由于 属性导致的 isCriticalSystemObject ,该属性对于某些帐户(包括默认管理员)设置为 True

  7. (可选) 如果要使用 Outlook for iOS 和 Android 客户端,请确保 允许自动检测服务连接到 Exchange Server

  8. 在本地 Exchange 中启用 HMA

启用混合新式身份验证的先决条件

在本部分中,我们将提供在 Microsoft Exchange Server 中成功配置和启用混合新式身份验证所需的信息和步骤。

Exchange Server 特定的先决条件

Exchange 服务器必须满足以下要求,然后才能配置和启用混合新式身份验证。 如果你有混合配置,则必须运行最新的累积更新 (CU) 才能处于支持状态。 可以在 Exchange Server 可支持性矩阵中找到支持的 Exchange Server 版本和内部版本。

  • 确保组织中没有生命周期结束的 Exchange 服务器。
  • Exchange Server 2016 必须运行 CU8 或更高版本。
  • Exchange Server 2019 必须运行 CU1 或更高版本。
  • 确保所有服务器都可以连接到 Internet。 如果需要代理, 请将 Exchange Server 配置为使用它
  • 如果已有混合配置,请确保它是经典混合部署,因为新式混合不支持 HMA。
  • 请确保不使用 SSL 卸载, (它不受支持) 。 但是,可以使用 SSL 桥接,并且受支持。

有关详细信息,请参阅 混合新式身份验证概述,以及将其与本地 Skype for Business 和 Exchange 服务器配合使用的先决条件 文档。

使用混合新式身份验证的协议

混合新式身份验证适用于以下 Exchange Server 协议:

协议 支持的混合新式身份验证
MAPI over HTTP (MAPI/HTTP)
Outlook Anywhere (RPC/HTTP)
Exchange Active Sync (EAS)
Exchange Web 服务 (EWS)
Outlook 网页版 (OWA)
Exchange 管理中心 (ECP)
脱机通讯簿 (OAB)
IMAP
流行

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

运行命令,将本地 Web 服务 URL 分配为 entra SPN Microsoft。 在身份验证和授权期间,客户端计算机和设备使用 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-ActiveSyncVirtualDirectory -ADPropertiesOnly | fl server,*url*
    

    确保可能连接到的 URL 客户端在 Entra ID Microsoft中列为 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'"
    $x.ServicePrincipalNames += "https://mail.corp.contoso.com/"
    $x.ServicePrincipalNames += "https://owa.contoso.com/"
    Update-MgServicePrincipal -ServicePrincipalId $x.Id -ServicePrincipalNames $x.ServicePrincipalNames
    
  6. 再次运行步骤 4 中的 Get-MgServicePrincipal 命令,验证是否已添加新记录,并验证输出。 将之前的列表与新的 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*
Get-ActiveSyncVirtualDirectory | fl server,*url*,*auth*

检查输出以确保 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) 和 Set-ActiveSyncVirtualDirectory

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

现在,在 Exchange Server 本地命令行管理程序 (EMS) 运行最后一个命令。 可以验证本地 Exchange Server 是否返回 evoSTS 身份验证提供程序的条目:

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

输出应显示名称 EvoSts - <GUID> 的 AuthServer, Enabled 状态应为 True。 如果不是这种情况,应下载并运行最新版本的 混合配置向导

如果本地 Exchange Server 运行 具有多个租户的混合配置,输出将显示一个 AuthServer,其中包含本地 Exchange Server 混合中的每个租户的名称 EvoSts - <GUID> ,并且 Enabled 所有 AuthServer 对象的状态应为 True 。 请记下标识符 EvoSts - <GUID>,因为后续步骤中需要该标识符。

启用 HMA

在 Exchange Server 本地命令行管理程序中运行以下命令, (EMS) ,并将命令行中的 替换为 <GUID> 运行的最后一个命令输出中的 GUID。 在旧版混合配置向导中,EvoSts AuthServer 在未附加 GUID 的情况下命名 EvoSTS 。 无需执行任何操作,只需通过删除命令的 GUID 部分来修改前面的命令行即可。

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

如果 Exchange Server 本地版本是 Exchange Server 2016 (CU18 或更高版本) 或 Exchange Server 2019 (CU7 或更高版本) 并且混合是在 2020 年 9 月之后下载的 HCW 的帮助下配置的,请在 Exchange Server 本地命令行管理程序 (EMS) 中运行以下命令。 DomainName对于 参数,请使用租户域值,其格式contoso.onmicrosoft.com通常为 :

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

如果 Exchange Server 本地与 多个租户混合,则 Exchange Server 本地组织中存在多个 AuthServer 对象,其域对应于每个租户。 对于 IsDefaultAuthorizationEndpoint 其中任一 AuthServer 对象,标志应设置为 True 。 无法为所有 AuthServer 对象将标志设置为 true,并且即使其中一个 AuthServer 对象 IsDefaultAuthorizationEndpoint 标志设置为 true,也会启用 HMA。

重要

使用 多个租户 时,它们必须全部位于同一个云环境中,例如 全部位于 Global 或 中 GCC。 它们不能存在于混合环境中,例如 中的一个租户和 中的GlobalGCC另一个租户。

验证

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

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

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

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

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

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

重要

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

若要为 OWAECP启用混合新式身份验证,必须将所有用户标识与 Microsoft Entra ID 同步。 此外,在本地 Exchange Server 和 Exchange Online 之间建立 OAuth 设置,然后才能执行进一步的配置步骤,这一点很重要。

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

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

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

警告

不支持通过 Microsoft Entra 应用程序代理发布 Outlook Web App (OWA) 和 Exchange 控制面板 (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. OWA指定 和 ECP URL,并使用回复 URL 更新应用程序:

    $servicePrincipal = Get-MgServicePrincipal -Filter "AppId eq '00000002-0000-0ff1-ce00-000000000000'"
    $servicePrincipal.ReplyUrls += "https://YourDomain.contoso.com/owa"
    $servicePrincipal.ReplyUrls += "https://YourDomain.contoso.com/ecp"
    Update-MgServicePrincipal -ServicePrincipalId $servicePrincipal.Id -AppId "00000002-0000-0ff1-ce00-000000000000" -ReplyUrls $servicePrincipal.ReplyUrls
    
  5. 验证是否已成功添加回复 URL:

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

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

    通过从提升的 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
    
  8. (可选) 仅在 Exchange 资源林拓扑 方案中需要:

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

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

    通过从提升的 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
    
  9. 若要为 OWAECP启用混合新式身份验证,必须先对这些虚拟目录禁用任何其他身份验证方法。 请务必按给定的顺序执行配置。 否则,可能会在命令执行期间出现错误消息。

    在每个 Exchange Server 上针对每个 OWA 目录和 ECP 虚拟目录运行以下命令,以禁用所有其他身份验证方法:

    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
    

    重要

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

  10. OWAECP 虚拟目录启用 OAuth。 请务必按给定的顺序执行配置。 否则,可能会在命令执行期间出现错误消息。 对于每个 Exchange Server 上的每个 OWAECP 虚拟目录,必须运行以下命令:

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

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

如果要将 Outlook for iOS 和 Android 客户端与混合新式身份验证一起使用,请确保允许 AutoDetect 服务 (TCP 443 HTTPS) 连接到 Exchange Server:

<email_domain>.outlookmobile.com
<email_domain>.outlookmobile.us
52.125.128.0/20
52.127.96.0/23

还可以在 Office 365 IP 地址和 URL Web 服务文档中未包含的其他终结点中找到 IP 地址 范围。

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