OAuth代表用户访问EWS



在使用管理权限时,我成功地将OAuth 2.0与EWS一起使用。现在我正在尝试设置它,以便个人用户可以登录并为自己授予访问权限。所以我用以下URL启动浏览器:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=f3f92d23-29dd-4465-828e-35300884ef61&redirect_uri=https%3A%2F%2Flogin.microsoftonline.com%2Fcommon%2Foauth2%2Fnativeclient&response_type=code&scope=offline_access%20Calendars.ReadWrite.All%20Contacts.ReadWrite.All%20Mail.ReadWrite.All%20Tasks.ReadWrite%20User.ReadBasic.All

浏览器允许我登录到我的测试帐户,但随后返回此错误:

error=客户端无效description=AADSTS650053应用程序"我的应用程序名称"要求范围"日历"。ReadWrite。所有这些资源"0000000 3-0000-0000-c000-000000000000"上不存在

在Azure中,当查看我的应用程序的API权限时,我有11个Exchange权限,包括日历的应用程序权限和委派权限。ReadWrite。所有,除了我要求的所有其他。

这是怎么回事?

因为EWS是传统的API,所以它没有实现Graph和Outlook REST API使用的更严格的权限模型。唯一适用于委派访问的权限是EWS。以用户身份访问。全部(范围https://outlook.office.com/EWS.AccessAsUser.All)。这样可以完全访问邮箱中的每个文件夹(以及授予用户访问权限的任何邮箱(。看起来你的申请注册已经包括了该权限,所以

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=f3f92d23-29dd-4465-828e-35300884ef61&redirect_uri=https%3A%2F%2Flogin.microsoftonline.com%2Fcommon%2Foauth2%2Fnativeclient&response_type=code&scope=offline_access%20https%3A%2F%2Foutlook.office.com%2FEWS.AccessAsUser.All

应该工作

最新更新