【问题标题】:403 Error when making API call to Microsoft Graph with proper permissions使用适当权限对 Microsoft Graph 进行 API 调用时出现 403 错误
【发布时间】:2021-01-22 17:13:05
【问题描述】:

我正在尝试使用 Java 从我的 Web 应用程序通过 API 调用将联系人添加到 Azure。我已经能够使用相同的 API 调用设置添加用户、向用户添加许可证以及其他各种任务,没有任何问题。但是,添加联系人时,出现以下错误:

 Exception in thread "main" com.microsoft.graph.http.GraphServiceException: Error code: 
 ErrorAccessDenied
 Error message: Access is denied. Check credentials and try again.

 POST https://graph.microsoft.com/v1.0/me/contacts
 SdkVersion : graph-java/v2.3.2
 SdkVersion : graph-java/v2.3.2
 Authorization : [PII_REDACTED]
 {"businessPhones":["+1 212 212 2121"],"emailAddres[...]

 403 : Forbidden

我已确保所有正确的权限都在那里,并且为了排除故障,我已授予该应用几乎所有的权限。通过微软的文档,我唯一能看到的可能问题是它可能是一个“范围”问题,因为到目前为止所有的调用都是在这里进行的:

        ClientCredentialParameters parameters = ClientCredentialParameters
                .builder(Collections.singleton("https://graph.microsoft.com/.default")).build();

        CompletableFuture<IAuthenticationResult> future = app.acquireToken(parameters);

此外,当我使用图形资源管理器手动执行这些调用时,我得到以下响应:

"error": {
    "code": "MailboxNotEnabledForRESTAPI",
    "message": "REST API is not yet supported for this mailbox.",
    "innerError": {
        "date": "2021-01-22T17:09:37",
        "request-id": "***********************",
        "client-request-id": "*********************"
    }
}

【问题讨论】:

  • 请检查您在jwt.ms 中的访问令牌,看看您的令牌中是否有权限。您使用的是应用令牌还是用户令牌?对于第二个错误,请确保您是否拥有正确的许可证,例如 E3 或 E5,其中包含 Exchange 许可证。
  • 您好,谢谢。当您说 jwt.ms 时,那在哪里。我相信我正在使用应用令牌。
  • 点击我上面提供的链接,然后将您的访问令牌粘贴到那里进行检查。

标签: java azure-active-directory microsoft-graph-api http-status-code-403


【解决方案1】:

您的想法是正确的,您正在使用基于守护程序的客户端凭据流来获取访问令牌,这是一个应用程序令牌。对于客户端凭证流,它通常用于必须在后台运行且不立即与用户交互(无用户登录)的服务器到服务器交互。对于/me 端点,它需要接受用户令牌,因为它有用户交互。所以你不能使用应用令牌来调用/me端点。

最简单的方法是将 /me 端点更改为/users endpoint

https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/contacts

至于第二个错误:

“MailboxNotEnabledForRESTAPI - 此邮箱尚不支持 REST API” 此错误消息表示您用于发送电子邮件的电子邮件帐户没有 Exchange Online 许可证。你需要assign licenses to users:

【讨论】:

    猜你喜欢
    • 2017-09-06
    • 2020-07-31
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多