我需要在Web API中读取共享邮箱中的邮件。Web API将不会代表用户运行,并且没有用户交互。我应该使用什么流对https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows进行身份验证。我尝试了使用applicationID and secret的标准身份验证,但是当我试图通过访问共享邮箱时,我得到了一个拒绝访问的错误。另外,共享邮箱的维护者将如何授予应用程序访问权限?
发布于 2021-07-15 19:28:34
首先,邮箱的委派或共享是通过outlook客户端完成的。
微软图形共享邮箱访问- 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..不会将邮箱视为共享邮箱。
https://stackoverflow.com/questions/68369952
复制相似问题