EWS Item.Copy操作持full_access_as_app权限仍失败,寻求解决办法
问题背景
我们使用EWS Item.Copy Operation已有近5年时间,自2月26日18:00 CET起,40个客户中有2个的该操作开始失败。Azure配置未发生变更,App Secrets与API Permissions设置正确且已重新授予权限确认。原本依赖的full_access_as_app权限突然不再被认可,执行复制时抛出错误:
reason="Access to this API requires the following permissions: 'MailExport-Internal.Read.All,MailExport-Internal.Read.Shared,MailExport-Internal.ReadWrite.All,MailExport-Internal.ReadWrite.Shared'. However, the application only has the following permissions granted: 'full_access_as_app'." error_category="invalid_grant"
已完成的排查动作:
- 通过Postman测试可正常获取待复制邮件及目标文件夹
- 更新App Secrets并重新授权权限
- 创建新邮箱测试,跨邮箱/文件夹操作仍失败
可行解决方向
1. 排查租户EWS应用权限策略
部分租户可能启用了EWS应用权限管控策略,导致full_access_as_app权限的覆盖范围被限制。让客户通过Exchange Online PowerShell执行以下命令检查:
Get-OrganizationConfig | Select-Object EwsApplicationAccessPolicy, EwsAllowList, EwsBlockList
若EwsApplicationAccessPolicy为EnforceAllowList,需确认你的应用ID在允许列表内;若为EnforceBlockList,检查是否被误加入黑名单。
2. 临时添加指定的MailExport权限
微软近期可能对EWS的复制类操作做了权限细分,尽管full_access_as_app理论上包含全邮箱权限,但临时添加错误提示中的MailExport-Internal.ReadWrite.All权限,授权后等待30分钟生效再测试。
3. 迁移至Graph API替代EWS操作
微软已停止EWS功能更新,建议切换到Graph API的邮件复制接口,兼容性更稳定。对应的应用权限仅需Mail.ReadWrite,接口示例:
POST /users/{user-id}/messages/{message-id}/copy
4. 确认租户Exchange Online版本更新
部分租户可能提前接收了微软的功能更新,导致EWS权限校验逻辑变更。让客户确认Exchange Online的版本是否在2月下旬有过更新批次,若有可联系微软支持确认是否为已知问题。
5. 提交微软支持工单
若以上方法无效,直接提交微软支持工单,需提供:
- 应用ID、租户ID
- 完整错误日志
- 已完成的排查步骤记录
- 操作失败的邮箱ID及文件夹ID
内容的提问来源于stack exchange,提问作者Hielke Hoeve

