个人microsoft帐户的守护程序应用程序权限

时间:2020-08-08 21:33:29

标签: azure outlook microsoft-graph-api

我正在编写一个守护程序应用程序,以使用Outlook Mail REST API(https://docs.microsoft.com/en-us/previous-versions/office/office-365-api/api/version-2.0/mail-rest-operations)管理我的个人Microsoft Outlook帐户。 为此,我必须生成用于API调用的正确授权令牌。 我使用我的Outlook帐户(xxx@outlook.com)登录到Azure门户,并注册了一个应用程序,创建了一个客户机密,然后将该应用程序授予User.Read.All权限。 我正在使用以下示例代码来测试我的应用程序: https://github.com/Azure-Samples/active-directory-dotnetcore-daemon-v2 我将来自应用程序的租户ID,客户ID和客户秘密添加到示例代码中,该代码成功生成了令牌。 但是,当示例代码调用graph.microsoft.com/v1.0/users时,它将返回此错误:

Failed to call the Web Api: Forbidden
Content: {
  "error": {
    "code": "Authorization_RequestDenied",
    "message": "Insufficient privileges to complete the operation.",
    "innerError": {
      "date": "2020-08-08T20:47:59",
      "request-id": "ae8c7509-eada-41fd-90d7-dbb7885da534"
    }
  }
}

这是由于User.Read.All权限需要管理员同意吗?如果是这样,我不是我自己的Outlook帐户的管理员吗?有更简单的方法吗?

2 个答案:

答案 0 :(得分:0)

听起来您有一个Azure AD租户,您在其中注册了该应用程序。 因此,当您尝试列出用户时,您试图列出该Azure AD租户中的用户。 您需要在该租户中获得管理员同意。 您可以在为应用程序授予管理员同意定义权限的选项卡上执行此操作,也可以使用/ adminconsent端点。

答案 1 :(得分:0)

访问数据之前,您需要同意您的应用程序。要针对您所指向的守护程序应用程序样本中使用的机密客户端应用程序(也称为客户端凭据流)执行此操作,您需要指出的是,您必须是管理员。

但是,对于Microsoft帐户/个人帐户,您不是租户的管理员,因此无法同意。

您将需要使用委托身份验证。您可以使用身份验证后获取的refresh_token在新的访问令牌到期时获取它们。