我正在尝试使用MS graph 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.]"根据documentation,此端点只需要与订阅实体相同的权限,在我的示例中为Calendars.Read。
这可能是什么原因造成的?我如何进一步调试它来理解为什么我会得到这个错误?我发现一些页面建议使用PowerShell来修改ApplicationAccessPolicy。这是否相关,是否只能通过PowerShell实现?为什么有一个模糊的策略只能通过PowerShell访问,而不能通过Azure控制台访问?
发布于 2021-10-26 20:56:09
事实证明,这是由于我试图订阅的用户不在正确的安全组中,这些安全组映射到应用程序策略。
因此,它与我的客户端的权限无关,而是与我试图订阅的目标用户有关。
https://stackoverflow.com/questions/69729601
复制相似问题