c# - 使用客户端 key 的 Azure 和 Microsoft Graph : Access denied accessing inbox,

标签 c# azure microsoft-graph-api microsoft-graph-sdks microsoft-graph-mail

我们尝试使用 Microsoft Graph 设置最简单的应用程序,用于从我们组织的邮箱中读取电子邮件。
它是后台服务,因此我们使用 ClientSecretCredential 作为身份验证策略。 这是代码:

var credentials = new ClientSecretCredential("xxx-tenantID","xxx-clientId","xxx-clientSecret");

var graphServiceClient = new GraphServiceClient(credentials, new string [] {"https://graph.microsoft.com/.default"});

var result = await graphServiceClient.Users["<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dcb1a5bdb8b8aeb9afaf9cb1a5bfb3b1acbdb2a5f2bfb3b1" rel="noreferrer noopener nofollow">[email protected]</a>"].MailFolders["Inbox"] .Messages.Request() .GetAsync();

似乎登录正确,但在尝试访问特定收件箱时却被拒绝:

Unhandled exception. Status Code: Forbidden
Microsoft.Graph.ServiceException: Code: ErrorAccessDenied
Message: Access is denied. Check credentials and try again.

我认为我们错过了 azure 方面的一些授权;特别是,我们找不到授权应用程序访问该特定邮箱的位置 ( [email protected] )。

更新:

当我们向应用程序授予如下所示的授权时,它就可以工作。 不幸的是,这允许访问组织中的所有邮箱,这是 Not Acceptable ,因为此应用程序应该只访问它旨在管理的服务邮箱。
现在的问题是如何限制对唯一需要的邮箱的访问。

抱歉屏幕截图中的意大利语,突出显示的文本表示“管理员同意”,并且是使应用程序正常运行的设置。 enter image description here

最佳答案

总而言之,您想使用客户端凭据访问单个邮箱吗?

您可以使用此 powershell 命令创建访问策略,以将此应用程序限制为单个邮箱或一组邮箱。

https://learn.microsoft.com/en-us/powershell/module/exchange/new-applicationaccesspolicy

Connect-ExchangeOnline

New-ApplicationAccessPolicy -AccessRight RestrictAccess -AppId <String[]> -PolicyScopeGroupId <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c6bfa9b3b4e8b5a3b4b0afa5a386a7a5a5a9b3a8b2e8a5a9ab" rel="noreferrer noopener nofollow">[email protected]</a>

关于c# - 使用客户端 key 的 Azure 和 Microsoft Graph : Access denied accessing inbox,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73222395/

相关文章:

azure - 如何在 Azure WebApp 上指定 aspnet core 项目的构建配置

Azure 角色开始顺序

node.js - Microsoft Graph Webhook/订阅,将多个帖子发送到我的 notificationUrl

azure - 图形 token 没有范围,同时尝试让 Azure 函数与 Excel 输出一起使用

C# - 如何将 SQL Server 时间(7)检索到 TimeSpan

c# - 让 WebAPI2 中的 PUT 和 DELETE 动词在 IIS 8.5 上工作

c# - EF 中的多个 where 条件

C# - 循环 foreach 直到 true

javascript - 如何在azure网站上将变量从javascript发送到PHP?

microsoft-graph-api - OneNote API 不返回新页面(即使通过 ms 图形资源管理器)