Azure active directory Microsoft Graph仅返回;用户。请阅读;密码授予的作用域

Azure active directory Microsoft Graph仅返回;用户。请阅读;密码授予的作用域,azure-active-directory,microsoft-graph-api,Azure Active Directory,Microsoft Graph Api,我试图从我们组织的365名销售人员那里收到电子邮件 我正在使用grant\u type=password并提供scope='Mail.Read',但是,无论我在scope参数上加了什么,API都只返回User.Read 我是这样打电话的: https://login.microsoftonline.com/{mytenantId}/oauth2/token 传递以下参数: client_id = myAppId, client_secret = myAppPassword, resource

我试图从我们组织的365名销售人员那里收到电子邮件

我正在使用
grant\u type=password
并提供
scope='Mail.Read'
,但是,无论我在scope参数上加了什么,API都只返回
User.Read

我是这样打电话的:

https://login.microsoftonline.com/{mytenantId}/oauth2/token
传递以下参数:

client_id = myAppId,
client_secret = myAppPassword,
resource = 'https://graph.microsoft.com/',
username = vendedor@email.com.br,
password = passwordDoVendedor,
scope = 'user.read,mail.read,mail.send',
grant_type = 'password',
prompt = 'admin_consent'
它只返回
User.Read
,无论我在scope参数上加了什么:

{#662
  +"token_type": "Bearer"
  +"scope": "User.Read"
  +"expires_in": "3599"
  +"ext_expires_in": "3599"
  +"expires_on": "1559623624"
  +"not_before": "1559619724"
  +"resource": "https://graph.microsoft.com/"
  +"access_token": "...token..."
  +"refresh_token": "...token..."
}

不能使用v1端点指定作用域,只有v2端点才支持它(请参见文档中的)

要添加
Mail.Read
,您需要将其添加到Azure门户中的应用程序注册中


如果我没有指出使用密码授权几乎总是一个坏主意,我也会失职。从根本上讲,它比其他任何OAuth授权都不安全

我也使用类似的空格:“Mail.Read Mail.Send User.Read”(使用空格而不是“,”),我完全同意您的看法,使用密码授权会增加风险,违反安全最佳做法,而且几乎总是一个坏主意。尽管我没有关注您提到的
部分,但请注意v2端点不支持OAuth密码授予
。我知道你是Microsoft Graph和Azure广告方面的专家。。所以我可能遗漏了一些东西。。但我想澄清一下,因为我确实在Microsoft文档中看到了v2端点支持密码授予的官方文档——有趣的是,它看起来是最近添加的(尽管没有MSA支持)。我会更新我的答案。