我有一个守护程序脚本,需要访问我的 Office 365 收件箱才能阅读邮件。目前我正在使用 Outlook Rest API V1.0 的基本身份验证,它运行良好,但由于它已停止使用,我希望转向 Graph API 和 OAuth 2.0 身份验证。客户端凭据流,如 here 所述似乎是守护程序脚本的最佳选择,但是,我对应用程序将拥有的权限范围感到困惑。我上面链接的文章看起来好像应用程序可以访问整个组织,但我只需要脚本就可以访问我自己的帐户。我不希望我的应用程序访问其他用户的帐户,而且我认为我们的 I.T.部门也会允许。
那么,使用客户端凭据身份验证时,应用程序的权限范围是什么?如果答案是“整个组织”,那么有没有办法将权限限制为仅我的帐户?如果没有,我的其他选择是什么?
编辑:一个类似的问题被问到 here但没有得到任何答复。
最佳答案
那是正确的。如果您使用客户端凭据,则根据定义,您使用的是应用程序范围。这些 token 没有“用户”上下文,因此是租户范围的权限。这就是为什么应用程序范围在使用之前总是需要管理员同意。
来自 documentation :
Mail.Read (Read mail in all mailboxes)
Allows the app to read mail in all mailboxes without a signed-in user.
如果这只是用于您的邮箱而不是您部署给其他人的东西,您可以使用授权代码授予
offline_access
范围同时获得 access_token
和 refresh_token
.一旦您使用 token “播种”了您的应用程序,该应用程序就可以使用
refresh_token
获取新的 access_token
当它到期时。您可能偶尔需要重新设置您的应用程序/服务(例如,如果您的密码更改),但否则,它应该可以在没有交互的情况下工作。
关于microsoft-graph-api - 通过客户端凭据流程进行图形身份验证 - 我的应用程序是否只能访问我的用户帐户或整个组织?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50273451/