概述
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 客户端应用的文档。
在开始之前 ,请确保满足先决条件 。
将本地 Web 服务 URL 添加到Microsoft Entra ID。 URL 必须添加为
Service Principal Names (SPNs)。 如果Exchange Server设置与多个租户处于混合状态,则必须将这些本地 Web 服务 URL 作为 SPN 添加到所有租户的Microsoft Entra ID中,这些租户与本地Exchange Server混合。确保为 HMA 启用所有虚拟目录。 如果要为 Outlook 网页版配置混合新式身份验证 (OWA) 和 Exchange 控制面板 (ECP) ,请务必同时验证各自的目录。
确保Exchange Server OAuth 证书有效。 可以使用 MonitorExchangeAuthCertificate 脚本 来验证 OAuth 证书的有效性。 如果过期,该脚本会协助续订过程。
确保所有用户标识都与Microsoft Entra ID同步,尤其是用于管理的所有帐户。 否则,登录名将停止工作,直到它们同步。 帐户(如内置管理员)永远不会与Microsoft Entra ID同步,因此,在启用 HMA 后,不能在任何 OAuth 登录名上使用。 此行为是由于 属性导致的
isCriticalSystemObject,该属性对于某些帐户(包括默认管理员)设置为True。(可选) 如果要使用 Outlook for iOS 和 Android 客户端,请确保允许 AutoDetect 服务连接到Exchange Server。
启用混合新式身份验证的先决条件
在本部分中,我们将提供在 Microsoft Exchange Server 中成功配置和启用混合新式身份验证所需的信息和步骤。
Exchange Server特定的先决条件
Exchange 服务器必须满足以下要求,然后才能配置和启用混合新式身份验证。 如果你有混合配置,则必须运行最新的累积更新 (CU) 才能处于支持状态。 可以在Exchange Server可支持性矩阵中找到受支持的Exchange Server版本和内部版本。 必须在组织内的所有 Exchange 服务器之间统一配置混合新式身份验证。 不支持部分实现,其中仅在一部分服务器上启用 HMA。
- 确保组织中没有生命周期结束的 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 管理员 Center (ECP) | 是 |
| 脱机通讯簿 (OAB) | 是 |
| IMAP | 否 |
| 流行 | 否 |
在 Microsoft Entra ID 中添加本地 Web 服务 URL 作为 SPN
运行命令,以Microsoft Entra SPN 的形式分配本地 Web 服务 URL。 在身份验证和授权期间,客户端计算机和设备使用 SPN。 所有可用于从本地连接到Microsoft Entra ID的 URL 都必须在Microsoft Entra ID (包括内部和外部命名空间) 注册。
首先,在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 在 Microsoft Entra ID 中列为 HTTPS 服务主体名称。 如果本地 Exchange 与多个租户处于混合状态,则应将这些 HTTPS SPN 添加到与本地 Exchange 混合的所有租户的Microsoft Entra ID中。
安装 Microsoft Graph PowerShell 模块:
Install-Module Microsoft.Graph -Scope AllUsers接下来,按照这些说明连接到 Microsoft Entra ID。 若要同意所需的权限,请运行以下命令:
Connect-MgGraph -Scopes Application.Read.All, Application.ReadWrite.All对于与 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://如果本地Exchange Server组织中缺少 URL,则应将这些特定记录添加到此列表中。如果在此列表中看不到内部和外部 MAPI/HTTP、EWS、ActiveSync、OAB 和自动发现记录,则必须使用以下命令添加这些记录, (示例 URL 为
mail.corp.contoso.com和owa.contoso.com,但需 将示例 URL 替换为自己的) 。 确保域的通用自动发现记录 (例如autodiscover.contoso.com) 也包括在内:$x = Get-MgServicePrincipal -Filter "AppId eq '00000002-0000-0ff1-ce00-000000000000'" $x.ServicePrincipalNames += "https://mail.corp.contoso.com/" $x.ServicePrincipalNames += "https://owa.contoso.com/" $x.ServicePrincipalNames += "https://autodiscover.contoso.com/" Update-MgServicePrincipal -ServicePrincipalId $x.Id -ServicePrincipalNames $x.ServicePrincipalNames再次运行步骤 4 中的
Get-MgServicePrincipal命令,验证是否已添加新记录,并验证输出。 将之前的列表与新的 SPN 列表进行比较。 还可以记下记录的新列表。 如果成功,则应在列表中看到两个新 URL。 按照我们的示例,SPN 列表现在包括特定的 URLhttps://mail.corp.contoso.com和https://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-MapiVirtualDirectory、 Set-WebServicesVirtualDirectory、 Set-OABVirtualDirectory、 Set-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,其中包含混合中的每个租户的名称EvoSts - <GUID>,Exchange Server本地,并且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 启用混合新式身份验证
现在还可以为 OWA 和 ECP启用混合新式身份验证。 在继续之前,请确保满足 先决条件 。
为 OWA 和 ECP启用混合新式身份验证后,尝试登录 OWA 或 ECP 的每个最终用户和管理员将首先重定向到Microsoft Entra ID身份验证页。 身份验证成功后,用户将被重定向到 OWA 或 ECP。
为 OWA 和 ECP 启用混合新式身份验证的先决条件
重要
所有服务器都必须至少安装了 Exchange Server 2019 CU14 更新。 他们还必须运行 Exchange Server 2019 CU14 2024 年 4 月胡或更高版本的更新。
若要为 OWA 和 ECP启用混合新式身份验证,必须将所有用户标识与 Microsoft Entra ID 同步。
此外,在完成进一步的配置步骤之前,还必须在本地Exchange Server和Exchange Online之间建立 OAuth 设置。
已运行混合配置向导 (HCW) 配置混合的客户,具有 OAuth 配置。 如果之前未配置 OAuth,可以通过运行 HCW 或按照配置 Exchange 与Exchange Online组织之间的 OAuth 身份验证文档中所述的步骤完成此作。
建议在进行任何更改之前记录 OwaVirtualDirectory 和 EcpVirtualDirectory 设置。 如果配置该功能后出现任何问题,本文档将使你能够还原原始设置。
为 OWA 和 ECP 启用混合新式身份验证的步骤
警告
不支持通过 Microsoft Entra 应用程序代理发布 Outlook Web App (OWA) 和 Exchange 控制面板 (ECP) 。
OWA查询在本地Exchange Server配置的 和ECPURL。 这一点很重要,因为它们必须作为回复 URL 添加到Microsoft Entra ID:Get-OwaVirtualDirectory -ADPropertiesOnly | fl name, *url* Get-EcpVirtualDirectory -ADPropertiesOnly | fl name, *url*安装 Microsoft Graph PowerShell 模块(如果尚未安装):
Install-Module Microsoft.Graph -Scope AllUsers按照这些说明连接到Microsoft Entra ID。 若要同意所需的权限,请运行以下命令:
Connect-Graph -Scopes User.Read, Application.ReadWrite.AllOWA指定 和ECPURL,并使用回复 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验证是否已成功添加回复 URL:
(Get-MgServicePrincipal -Filter "AppId eq '00000002-0000-0ff1-ce00-000000000000'").ReplyUrls若要启用Exchange Server本地执行混合新式身份验证的功能,请按照启用 HMA 部分中概述的步骤进行作。
(可选) 仅当使用 下载域 时才需要:
通过从提升的 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(可选) 仅在 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若要为
OWA和ECP启用混合新式身份验证,必须先对这些虚拟目录禁用任何其他身份验证方法。 请务必按给定的顺序执行配置。 否则,可能会在命令执行期间出现错误消息。
对每个OWAExchange Server和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。为
OWA和ECP虚拟目录启用 OAuth。 请务必按给定的顺序执行配置。 否则,可能会在命令执行期间出现错误消息。 对于每个Exchange Server上的每个OWA和ECP虚拟目录,必须运行以下命令: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 服务连接到 (HTTPS) 上的TCP 443Exchange 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 地址范围。