图 API - 自动获取电子邮件(委托权限)

Graph API - Automate Getting Emails (Delegated Permissions)

我正在开发一个后台应用程序(不可能有用户交互),我想使用 Graph API 自动从某些邮箱中获取所有电子邮件。不过我遇到了一些问题:

  1. 如果我使用应用程序权限,我可以访问组织中的每个邮箱,这不是一个好的解决方案。是否可以限制对某些邮箱的访问?我们使用的是 On-premise Exchange 而不是 Exchange Online,因此此 link 不相关 (https://docs.microsoft.com/en-us/graph/auth-limit-mailbox-access)。

  2. 如果我使用委托权限,该应用程序将需要用户交互(据我所知)但这不可能,因为它应该在后台 运行。我正在查看不同的身份验证流程,但其中 none 确实符合我的需要。也许可以通过刷新令牌流来完成,但它似乎很脆弱。是否可以在没有用户交互的情况下使用委托权限?如果是,最好的方法是什么?

此致 J

首先,没有用户就无法使用 delegated permissions。已登录用户在场的应用程序使用委派权限。

看来 Resource Owner Password Credentials(ropc) flow 允许应用程序通过直接处理用户密码来登录用户是您的最佳选择。但它有风险,请参阅文章中的重要以确保您可以使用它。您应该仅在无法使用其他更安全的流程时才使用此流程。

POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id=<client_id>
&scope=user.read%20openid%20profile%20offline_access
&username=MyUsername@myTenant.onmicrosoft.com
&password=<password>
&grant_type=password