了解如何控制用户、应用程序或整个组织对 EWS 的访问。
无论是在应用程序中使用 EWS 托管 API,还是直接使用 EWS,都可以控制对 Exchange Web 服务 (EWS) 的访问。 如果你对 Exchange 服务器具有管理员访问权限,可以使用 Exchange 命令行管理程序全局控制对每个用户和每个应用程序的访问,从而管理对 EWS 的访问。 有关详细信息,请参阅 使用远程 PowerShell 连接到 Exchange 服务器。
用于配置访问控制的 Exchange 命令行管理程序 cmdlet
可以使用以下 Exchange 命令行管理程序 cmdlet 查看当前访问配置并设置 EWS 访问控制:
- Get-CASMailbox - 显示为特定邮箱设置的参数。
- Set-CASMailbox - 设置特定邮箱的参数。
- Get-OrganizationConfig - 显示整个组织的参数。
- Set-OrganizationConfig - 设置整个组织的参数。
注意
由于 EWS 弃用,EWSEnabled 参数的操作方式将在 2026 年 10 月发生更改。 有关详细信息,请参阅 Exchange Online EWS,你的时间即将到。
示例:控制对 EWS 的访问
我们来看看一些方案,演示了如何控制对应用程序的访问。
表 1. 用于控制 EWS 访问权限的命令
| 如果您想要 | 使用此命令 |
|---|---|
| 允许客户端应用程序列表使用基于用户代理) 的 EWS (。 | Set-OrganizationConfig -EwsApplicationAccessPolicy:EnforceAllowList -EwsAllowList:"OWA/*"这允许特定应用进程使用 EWS。 在此示例中,允许访问具有以“OWA/”开头的用户代理字符串的任何应用进程。 注意:基于用户代理的阻止也会影响使用 REST/图形 API 的连接 |
| 允许客户端应用程序列表使用基于应用程序 ID) 的 EWS (。 | Set-OrganizationConfig -EwsAllowedAppIDs "11111111-2222-3333-4444-555555555555,aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"当 EWSEnabled 设置为 True 时,只有此列表中的应用程序 ID 才能使用 EWS。 |
| 允许所有客户端应用程序使用 EWS,但根据用户代理) 明确阻止 (的应用程序除外。 | Set-OrganizationConfig -EwsApplicationAccessPolicy:EnforceBlockList -EwsBlockList:"OWA/*"此示例仅阻止应用程序使用具有以“OWA/”开头的用户代理字符串的 EWS。 注意:基于用户代理的阻止也会影响使用 REST/图形 API 的连接 |
| 阻止整个组织使用 EWS。 | Set-OrganizationConfig -EwsEnabled:$false 重要提示: 在组织中禁用 EWS 还会禁用每用户 EWS 替代。 |
| 允许整个组织使用 EWS。 | Set-OrganizationConfig -EwsEnabled:$true 重要提示: 默认值 Null 将被视为设置为 True 的 EwsEnabled。 |
| 阻止单个邮箱使用 EWS。 | Set-CASMailbox -Identity adam@contoso.com -EwsEnabled:$false |
| 允许单个邮箱使用 EWS。 | Set-CASMailbox -Identity adam@contoso.com -EwsEnabled:$true |
注意
将为每个连接计算 EwsAllowedAppIDs 和 EWSAllowList/EWSBlockList,并且两者都必须通过才能允许连接。 如果租户除了配置 EWSAllowedAppIDs 列表外还使用 EwsApplicationAccessPolicy:EnforceAllowList,则他们必须在 EwsAllowList 中保留所有必需的用户代理。 例如,当允许 Teams AppID cc15fd57-2c6c-4117-a88c-83b1d56b4bbe 时,它必须包含“Teams CalendarSkypeSpaces/1.0a$*+”,否则将阻止 Teams Calendar。
了解 Exchange Online 中的 HTTP 403 响应
当上述 EWS 访问控制阻止请求时,Exchange Online 返回“HTTP 403 已禁止”,并在响应标头中X-EWS-Policy-Reason提供诊断信息。 应用程序应检查此标头,而不是依赖响应正文中的错误消息。
应用程序可能被阻止的三个原因
-
已为用户或组织禁用 EWS。
适用EwsEnabled的设置阻止访问。 组织范围的禁用还会阻止启用了邮箱级别设置的用户。 -
应用程序 ID 允许列表不允许该应用程序。
当应用程序 ID 限制适用时,应用程序的 ID 必须包含在EwsAllowedAppIDs. -
应用程序被 User-Agent 策略阻止。
对于EnforceAllowList,应用程序的 User-Agent 必须与 中的条目EwsAllowList匹配。 使用 ,则EnforceBlockList它不得与 中的EwsBlockList条目匹配。
两个诊断消息
一个响应标头有两个可能值,而不是每个阻止条件的单独错误消息。 应用程序 ID 和 User-Agent 策略块返回相同的消息。
X-EWS-Policy-Reason 值 |
含义 | 要检查的配置 |
|---|---|---|
EWS is disabled for this user or tenant |
适用的用户或组织配置已禁用 EWS。 | 组织和邮箱 EwsEnabled 设置。 |
EWS is blocked by policy for this user or tenant |
应用程序访问策略阻止请求。 该消息不区分应用程序 ID 阻止和 User-Agent 阻止。 |
EwsAllowedAppIDs,以及适用 EwsApplicationAccessPolicy的 、 EwsAllowList或 EwsBlockList 设置。 |
例如,禁用 EWS 时:
HTTP/1.1 403 Forbidden
X-EWS-Policy-Reason: EWS is disabled for this user or tenant
当应用程序 ID 或 User-Agent 策略阻止应用程序时:
HTTP/1.1 403 Forbidden
X-EWS-Policy-Reason: EWS is blocked by policy for this user or tenant
这两种策略类型都使用第二个标头值。
[!注意] 仅凭 HTTP 403 状态并不能确定 EWS 禁用或这些应用程序策略之一导致了故障。 这些诊断消息标识本节所述的访问控制块;其他访问限制也可能产生 HTTP 403 响应。
对阻止的 EWS 请求进行故障排除
1. 检查响应标头
检查 HTTP 状态和 X-EWS-Policy-Reason 值。 使用诊断消息确定是调查 EWS 禁用还是应用程序访问策略。
2. 查看组织配置
检查组织级别的 EWS 启用和 User-Agent 策略:
Get-OrganizationConfig |
Format-List EwsEnabled,EwsApplicationAccessPolicy,EwsAllowList,EwsBlockList
单独检索应用程序 ID 允许列表:
Get-OrganizationConfig -RetrieveEwsOperationAccessPolicy |
Format-List EwsAllowedAppIDs
用于 -RetrieveEwsOperationAccessPolicy 检索配置 EwsAllowedAppIDs 的值。
3. 查看受影响的邮箱
检查邮箱是否启用了 EWS:
Get-CASMailbox -Identity adam@contoso.com |
Format-List EwsEnabled
检查邮箱设置和组织设置。 为邮箱启用 EWS 不会覆盖组织范围内的禁用。
4. 确定适用的限制
如果标头显示 EWS is disabled for this user or tenant:
- 查看组织和邮箱
EwsEnabled设置。 - 如果应允许访问,请更正适用的禁用设置。
- 当 EWS 保持禁用状态时,不要期望应用程序 ID 或 User-Agent 允许列表更改来还原访问权限。
如果标头显示 EWS is blocked by policy for this user or tenant:
- 检查应用程序 ID 限制是否包含在应用时包含
EwsAllowedAppIDs应用程序的 ID。 - 检查其 User-Agent 是否满足适用的允许列表或阻止列表策略。
- 查看这两种策略类型。 标头不识别哪个阻止了请求,并且通过一个检查不会绕过另一个。
在更改限制之前,请确认应根据组织的访问策略允许应用程序。
5. 留出时间让更改生效
由于缓存,更改 EwsAllowedAppIDs 可能需要长达 24 小时 才能生效。 立即重试可能仍反映以前的配置。