【问题标题】:Microsoft Graph Mail Query - Getting "ErrorAccessDenied"Microsoft Graph 邮件查询 - 获取“ErrorAccessDenied”
【发布时间】:2021-01-01 14:55:45
【问题描述】:

我的公司正在使用 Microsoft 365 商业标准版许可证。我们通过这些帐户使用电子邮件。我们还有一些共享邮箱。我们正在尝试创建一个使用 microsoft graph 应用程序权限(而不是委派权限)的应用程序,以便应用程序可以访问其中一个共享邮箱,而无需在当前用户下进行身份验证。

这是我们目前采取的步骤:

  1. 在 Microsoft Azure 中,我们有一个应用程序,我们已在其中授予 Mail.Read 的应用程序 api 权限,并且我们已接受管理员同意。

  2. 我们在应用程序中授权作为应用程序,而不是用户,使用此端点https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize,指出发送请求所需的参数。然后,MS API 建立这个链接:

https://login.microsoftonline.com/{some_string}/oauth2/v2.0/authorize?state={some_string}&scope=offline_access%20https%3A%2F%2Fgraph.microsoft.com%2F.default&response_type=code&approval_prompt=auto&redirect_uri=http%3A%2F%2Flocalhost&client_id={some_string}

当我们点击链接时,我们会看到网站上的标准授权表格。登录后,会创建一个链接,我们在其中获取代码并创建令牌:http://localhost/?code={some_string}&state={some_string}&session_state={some_string}

  1. 当我们尝试访问此端点时:https://graph.microsoft.com/v1.0/users/sharedmailbox@domain.com/messages,我们得到以下响应:

{ “错误”: { "code": "ErrorAccessDenied", "message": "访问被拒绝。检查凭据并重试。", “内部错误”:{ “日期”:“2020-09-14T11:22:30”, "request-id": "{some_string}", “客户端请求 ID”:“{some_string}” } } }

我在想,点击这个端点 https://graph.microsoft.com/v1.0/users/sharedmailbox@domain.com/messages 需要我们传递先前生成的令牌和/或指定哪个应用程序正在进行查询?

非常感谢任何关于需要做什么来使这个查询工作的帮助或指导。谢谢!

【问题讨论】:

    标签: microsoft-graph-api microsoft-graph-mail


    【解决方案1】:

    为了使用应用程序权限,您需要使用客户端凭据身份验证流程(而不是使用委托权限的授权代码身份验证流程)。要获取令牌,请针对“/oauth2/v2.0/token”发出请求并在请求中指定“grant_type=client_credentials”。有关更多详细信息,请参阅此处的客户端凭据身份验证流程示例:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow

    【讨论】:

      【解决方案2】:

      我在想,点击这个端点 https://graph.microsoft.com/v1.0/users/sharedmailbox@domain.com/messages 需要我们传递之前生成的令牌和/或指定哪个应用程序正在进行查询?

      是的,您需要在 Authorization 标头中发送 AccessToken,您还应该包括 x-anchormailbox 标头,这有助于将请求路由到正确的邮箱,例如

      GET https://graph.microsoft.com/v1.0/users/sharedmailbox@domain.com/messages HTTP/1.1
      Host: graph.microsoft.com
      Authorization: Bearer EwAoA8l6BAAU ... 7PqHGsykYj7A0XqHCjbKKgWSkcAg==
      X-AnchorMailbox: sharedmailbox@domain.com
      

      您可能要检查的另一件事是确保您的令牌中有正确的范围,您可以为此使用https://jwt.io/

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多