0

我正在尝试使用 MS 图形 API 的订阅功能来收听日历中的更改。我的应用程序对 Azure 中设置的所有用户都具有 Calendars.ReadWrite 权限,并且使用我为我的应用程序获得的访问令牌的所有用户都可以很好地读取和写入日历事件。但是,当调用 POST /subscriptions 端点以订阅一个用户日历中的更改时,我得到“对 OData 的访问被禁用”。

POST https://graph.microsoft.com/v1.0/subscriptions
{
  "changeType": "created,updated",
  "notificationUrl": "https://...my.endpoint...",
  "resource": "users/someone%40somedomain.com/events",
  "expirationDateTime": "2021-10-27T20:09:25.025Z",
  "clientState": "foo"
}

这给出了以下错误:

"code": "ExtensionError",
"message": "Operation: Create; Exception: [Status Code: Forbidden; Reason: Access to OData is disabled.]"

根据文档,此端点只需要与订阅实体相同的权限,在我的情况下是Calendars.Read.

这可能是什么原因造成的?如何进一步调试以了解我收到此错误的原因?我发现一些页面建议使用 PowerShell 来修改 ApplicationAccessPolicy。这是否相关,是否只能通过 PowerShell 实现?为什么会有只能通过 PowerShell 而不能通过 Azure 控制台访问的晦涩策略?

4

1 回答 1

0

原来这是由于我尝试订阅的用户不在正确的安全组中,这些安全组已映射到应用程序策略。

所以它与我的客户的权限无关,而是与我试图订阅的目标用户有关。

于 2021-10-26T20:56:08.663 回答