MsGraph WebAPI 访问共享邮箱

时间:2021-07-13 22:26:43

标签: email microsoft-graph-api

我需要从 Web API 中的共享邮箱读取邮件。 Web API 不会代表用户运行,并且没有用户交互。我应该使用什么流程来验证 https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows。我尝试使用 applicationID and secret 进行标准身份验证,但是当我尝试通过访问共享邮箱时出现访问被拒绝错误。另外共享邮箱的维护者将如何授予应用程序访问权限?

1 个答案:

答案 0 :(得分:0)

首先,邮箱的委派或共享是通过 Outlook 客户端完成的。

Microsoft Graph 共享邮箱访问 - documented here for shared mail folders 与非共享邮箱相同,但具有共享邮箱权限,即 Mail.Read.Shared or Mail.ReadWrite.Shared,并且仅适用于委派权限。

也就是说,说到使用流程,这取决于您的要求。根据您的描述,您应该能够Client credentials flow 和应用程序权限Mail.ReadBasic.All、Mail.Read、Mail.ReadWrite

另一点是,如果您的 API 不会代表用户运行,则共享邮箱的上下文不适用,因为如果访问令牌已委派权限但具有应用程序权限访问,Graph 将考虑共享访问,它不适用.这就是权限 Mail.Read.Shared or Mail.ReadWrite.Shared 对应用程序权限不可用的原因。

为了更好地理解:

GET /users/{id | userPrincipalName}/mailFolders.. 仅在 id | 时有效userPrincipalName 不是登录用户,Mail.Read.Shared or Mail.ReadWrite.Shared 被添加为委派权限

GET /users/{id | userPrincipalName}/mailFolders.. 未登录的用户不会将邮箱视为共享邮箱。

相关问题