我正在开发一个后台应用程序(不可能进行用户交互),并且我想使用 Graph API 自动从某些邮箱获取所有电子邮件。但我面临一些问题:
如果我使用应用程序权限,我可以访问组织中的每个邮箱,这不是一个好的解决方案。是否可以限制某些邮箱的访问?我们使用的是本地 Exchange,而不是 Exchange Online,因此此链接不相关 ( https://learn.microsoft.com/en-us/graph/auth-limit-mailbox-access )。
如果我使用委托(delegate)权限,应用程序将需要用户交互(据我所知),但这不可能,因为它应该在后台运行。我正在研究不同的身份验证流程,但没有一个真正适合我的需要。也许可以通过刷新 token 流来完成,但它似乎很容易受到攻击。是否可以在没有用户交互的情况下使用委派权限?如果是,最好的方法是什么?
最诚挚的问候 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
&<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="11646274637f707c742c5c68446274637f707c74517c6845747f707f653f7e7f7c7872637e627e77653f727e7c" rel="noreferrer noopener nofollow">[email protected]</a>
&password=<password>
&grant_type=password
关于azure - Graph API - 自动获取电子邮件(委派权限),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67632287/