Oauth 2.0 使用Microsoft Graph对守护程序使用委派权限

Oauth 2.0 使用Microsoft Graph对守护程序使用委派权限,oauth-2.0,microsoft-graph-api,Oauth 2.0,Microsoft Graph Api,我正试图通过OAUTH2身份验证使用MicrosoftGraphAPI,但是我正在努力解决如何使用委派权限而不需要用户登录的问题 我很乐意自己验证一下这个应用程序,但它将在守护进程/服务上运行,不会通过用户与之交互。因此,我不能使用Microsoft描述委派权限的方式,即先使用/authorize,然后再调用/token 我知道您可以为/token使用密钥,但似乎只有使用应用程序权限,而不是委托-这是我可以访问的 有没有一种方法可以像我是一个用户一样使用委托权限进行身份验证,而无需用户每次都使用

我正试图通过OAUTH2身份验证使用MicrosoftGraphAPI,但是我正在努力解决如何使用委派权限而不需要用户登录的问题

我很乐意自己验证一下这个应用程序,但它将在守护进程/服务上运行,不会通过用户与之交互。因此,我不能使用Microsoft描述委派权限的方式,即先使用
/authorize
,然后再调用
/token

我知道您可以为
/token
使用密钥,但似乎只有使用应用程序权限,而不是委托-这是我可以访问的


有没有一种方法可以像我是一个用户一样使用委托权限进行身份验证,而无需用户每次都使用登录页面

这是不可能的。“委派”一词在这里是非常有意的,因为它意味着“用户已将其权限委派给您的应用程序,因此您可以代表该用户进行操作”。未委派应用程序权限,因为上下文中没有
用户
将其访问权限委派给您

  • =委托的权限范围
  • ==委派的权限范围
  • ==委派的权限范围

Microsoft Graph的许多功能同时适用于应用程序和委托范围,因此在许多情况下,您仍然可以执行相同的场景。有一些注意事项,例如使用速记
/me
,当没有用户身份验证时,速记就不存在了(相反,您需要使用
/users[{id}]
)。然而,在某些情况下,没有同等的应用范围,为了缩小差距,我们会定期对这些情况进行研究

因此,由于应用程序权限需要管理员批准并授予对所有项目的访问权限(对于大型广告来说并不完美),如果我已经为应用程序设置了委派权限,但仍然使用API令牌方法,那么我是否能够使用/users[{id}]但仅针对我的用户有权限的事项?如果您请求了需要管理员同意的委托权限(即
user.Read.All
),并且您已收到管理员的同意,则是。一旦
用户
通过OAUTH,他们将有权执行对
/me
/users{我以外的人
端点的调用。他们仍然无法执行否则无法执行的函数(即,如果
用户
无法正常编辑其他
用户
,则您的应用程序也无法编辑)。如果没有用户通过UI登录应用程序,则无法仅使用管理员所有应用程序权限?如果没有用户,则无法使用委派权限,但大多数
所有
作用域都具有应用程序等效项。例如,有委派的
user.Read.All
和应用程序
user.Read.All
scope。对于非常危险的作用域,存在一些例外;
目录.AccessAsUser。例如,All
仅对使用委托作用域的管理员可用。