如何通过无人值守控制台应用读取Exchange邮箱
问题详情
背景
我已尝试实现该方案多日,这是我首次使用Microsoft Graph。我请网络管理员注册了应用,并参考了相关快速入门代码及两个示例项目。
方案一:PublicClientApplication 遇到的问题
代码示例:
var App = PublicClientApplicationBuilder .Create("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") .WithTenantId("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") .Build();
PublicClientApplication的AcquireTokenByIntegratedWindowsAuth方法看似适合以指定用户身份通过计划任务启动控制台应用,但运行时提示“WS-Trust端点未找到”,请问WS-Trust端点在哪里定义?- 示例中的
var accounts = await App.GetAccountsAsync()始终返回0个账户,搜索得知需使用全局租户管理员,但公司完全不认可该方案,这如何保证安全?是否需要专门创建一个租户管理员用户?
方案二:ConfidentialClientApplication 遇到的问题
代码示例:
var App = ConfidentialClientApplicationBuilder.Create("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") .WithClientSecret("aeiou~XXXXXXXXXXX") .WithAuthority(new Uri("https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")) .Build();
ConfidentialClientApplication没有集成Windows身份验证版本,我能成功连接并获取MailFolders和Messages进行处理,但仅当使用App.AcquireTokenForClient(scopes)且API权限允许应用读取所有人邮件时才有效,安全部门对此也不认可。
关于EWS的疑问
我还查看了Exchange Web Services的模拟权限相关资料,部分资料显示EWS已弃用,应改用MS Graph,请问MS Graph中EWS类别的API权限是否仍会保留?
核心需求与求助
需求为:无人值守(通过计划任务启动)、仅具备读取单个邮箱的权限、可保存附件。
能否告知实现该需求的正确配置组合(API权限、客户端应用类型、作用域、权限机构等)?
内容的提问来源于stack exchange,提问作者Hey Mikey
相关产品推荐
相关产品推荐

