通过客户凭证流进行图式身份验证-我的应用程序是否只能访问我的用户帐户或整个组织?

Big*_*man 4 outlook-restapi microsoft-graph

我有一个守护程序脚本,需要访问我的Office 365收件箱才能阅读消息。目前,我正在将基本身份验证与Outlook Rest API的V1.0一起使用,效果很好,但由于已终止,因此我希望转向Graph API和OAuth 2.0身份验证。客户credentails流,如所描述这里似乎是一个守护进程脚本是最好的选择,但是,我很困惑的权限范围的应用都会有。我在上面链接的文章看起来好像该应用程序可以访问整个组织,但我只需要脚本即可访问我自己的帐户。我不希望我的应用访问其他用户的帐户,并且我认为我们的IT部门也不允许这样做。

那么,使用客户端凭据身份验证时应用程序权限的范围是什么? 如果答案是“整个组织”,那么是否有办法将权限限制为仅我的帐户?如果没有,我还有其他选择吗?

编辑:这里提出类似的问题,但没有得到任何答案。

Mar*_*eur 5

那是正确的。如果使用客户端凭据,则根据定义,您使用的是应用程序范围。这些令牌没有“用户”上下文,因此是承租人范围的权限。这就是为什么应用程序范围在使用前始终需要获得管理员同意。

文档中

Mail.Read(读取所有邮箱中的邮件)

允许该应用在没有登录用户的情况下读取所有邮箱中的邮件。

如果这仅是用于您的邮箱而不是您要部署到其他人的邮箱,则可以将授权代码授予与offline_access范围一起使用来获取access_tokenrefresh_token

使用令牌“播种”您的应用后,该应用可以使用refresh_tokenaccess_token在过期时使用来获取新的令牌。您可能偶尔需要重新设置您的应用程序/服务的种子(例如,如果您的密码更改了),但否则,它应该可以正常工作而无需交互。

  • 有几种原因可能使其过期。最常见的是密码更改或用户或管理员撤消了权限。也可以由AAD管理员将其设置为在设置的时间后过期。但是,默认情况下,它们的到期时间设置为“直到撤销”,这意味着它们将一直处于活动状态,直到被用户,管理员或密码重置将其撤销。 (2认同)