我们正在尝试通过Azure AD进行身份验证并返回令牌以使用EWS API进行调用。
如果我的作用域是https://outlook.office365.com/EWS.AccessAsUser.All/.default,那么它返回 “com.microsoft.aad.msal4j.MsalServiceException:澳大利亚药品标准局500011:在名为company的租户中找不到名为https://outlook.office365.com/EWS.AccessAsUser.All的资源主体。如果租户的管理员未安装应用程序或租户中的任何用户未同意该应用程序,则可能会发生这种情况。您可能已将身份验证请求发送给错误的租户。"
如果我的作用域为https://outlook.office365.com/.default,则返回 * 请求失败。请求失败。远程服务器返回错误:(403个)*
不确定是API权限不正确还是代码中有问题?
应用注册API权限(https://i.stack.imgur.com/kDhjI.png)
Java Code
我希望进行身份验证,EWS API返回一个文件夹列表。
1条答案
按热度按时间e7arh2l61#
对于委托身份验证,正确的范围为
https://outlook.office365.com/EWS.AccessAsUser.All
你不应该有/.default在末尾,这将使范围无效,这就是为什么你得到的错误。
在您为代码提供的链接中,它显示您正在使用客户端凭据流,但在您的权限列表中,您没有列出任何应用程序权限。要使EWS使用客户端凭据流,您需要具有full_access_as_app权限,例如x1c 0d1x
然后使用的作用域为
https://outlook.office365.com/.default
如果您在UI中找不到应用程序权限,可以通过修改清单添加该权限,请参见https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-authenticate-an-ews-application-by-using-oauth中的仅限应用程序身份验证