多作用域不工作,使用 Microsoft Graph API SDK

Multipe Scope not working, Use Microsoft Graph API SDK

我已经在 Azure AD 门户中注册了一个应用程序,并授予 Microsoft Graph API 权限以获取用户数据(user.read。)和 yammer 源。

注意:该应用程序还注册了 yammer 门户。

如果我使用单个范围,应用程序验证工作正常,但在多个范围的情况下失败。

例:

在单范围情况下工作正常 val SCOPES = arrayOf("https://graph.microsoft.com/.default")

在多范围情况下不工作 val SCOPES = arrayOf("https://graph.microsoft.com/.default", "https://api.yammer.com/user_impersonation")

我们在 Android 中使用 Graph SDK。

提前致谢。

请提出解决方案。

您设置了来自不同资源的两个范围,这是不支持的。

因为,最后你会得到一个Azure AD access token。但是,令牌中的 aud 声明只能代表一种资源。


结论:

  1. 您可以从一个资源添加多个范围。例如:https://graph.microsoft.com/User.Read.Allhttps://graph.microsoft.com/Mail.ReadWrite 和 Microsoft Graph 中的其他范围。

  2. 如果您要为多个资源获取令牌,您需要分别为它们获取令牌。

我想我们也可以只添加 user.read.all, mail.readwrite 等而不用整个图作为前缀 URL,只是它需要用逗号分隔。