在 EWS 中模拟用户时如何使用委托访问类型?

How to use delegate access type while impersonating a user in EWS?

是否可以结合委托和模拟访问类型?

示例:使用服务帐户凭据模拟 Bill,我需要使用 Bill 的权限级别访问 Jane 的日历。

因为我有服务帐户凭据,所以我可以简单地模拟 Jane 并以这种方式编辑她的日历 - 但我想验证 Bill 应该有权访问 Jane 的日历。另外,我想确保有一个审计跟踪显示日历是代表 Bill 编辑的。

EWS 是否提供任何类型的假“凭据”用于此目的?

这与我的另一个问题有关,因为我认为访问 Jane 日历的唯一方法是通过委托访问,即使它已与 Bill 共享:What is the recommended way to access shared *personal* calendars in EWS?

当您说共享 个人 日历时,这听起来像是您在谈论 https://support.microsoft.com/en-us/office/import-or-subscribe-to-a-calendar-in-outlook-on-the-web-503ffaf6-7b86-44fe-8dd6-8099d95f38df 。因此,当您在 EWS 中查询它们时看不到它们的原因是客户端本身提供了该功能,而 EWS 只是一个邮箱访问 API,因此它向您显示了服务器上存在的内容。如果您使用 MAPI 编辑器(如 MFCMapi 的 OutlookSpy)并查看有问题的邮箱,这可能更有意义,因为这将向您显示邮箱本身的原始底层内容(包括任何隐藏文件夹等)。

模拟为您对 EWS 进行的任何调用设置基础安全上下文,因此如果您模拟 Bill 然后访问 Jane 的日历,您将在 Bill 的安全上下文下执行此操作,因此应用于 bill 的任何委托权限都将适用。根据 link Erik 发布的内容,听起来您遇到的问题更像是与图书馆本身有关。 EWS 有两种不同的 FolderId 类型,distinguishedfolderidtype https://docs.microsoft.com/en-us/dotnet/api/exchangewebservices.distinguishedfolderidtype.mailbox?view=exchange-ews-proxy 允许您指定与您发出的请求关联的邮箱。因此,例如,如果您在 Jane 的邮箱中寻找用户创建的文件夹,您可能会使用 Jane 收件箱上的 distinguishedfolderidtype 从 FindFolder 操作开始。在该库中,他们使用了帐户(或“帐户实例”)的概念,而不是邮箱,这在一个层面上是有意义的并且易于理解,但在某些情况下,它没有提供与底层 [=18] 相同的灵活性=] 提供(例如,您确实需要能够在使用“帐户实例”之外访问另一个邮箱,因为当您拥有共享邮箱或群组邮箱时,这可能无法正常工作,其中帐户意味着不同的东西)。