【问题标题】:How to add the permissions in the access token of Microsoft Graph API如何在 Microsoft Graph API 的访问令牌中添加权限
【发布时间】:2021-09-29 12:09:25
【问题描述】:

我想使用 Microsoft Graph API 来发送电子邮件。 所以,我遵循的步骤是: 我想首先获取访问令牌以通过 Microsoft Send Mail API 发送邮件。 为了获取访问令牌,我一直在尝试客户端凭据流来获取访问令牌,并尝试了 Postman 的以下 curl。

curl --location --request POST 'https://login.microsoftonline.com/85173d93-99ef-4dff-9b45-495719659133/oauth2/v2.0/token' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --header 'Cookie: fpc=AnGmtKaDzItFhP3TSH4j_oCmg-KtAwAAAKMJi9gOAAAAdjbDngIAAAB7DYvYDgAAAA; stsservicecookie=estsfd; x-ms-gateway-slice=estsfd' \
    --data-urlencode 'client_id=f0599628-cd3a-4478-84f0-563cb5a10f3b' \
    --data-urlencode 'scope=api://f0599628-cd3a-4478-84f0-563cb5a10f3b/.default' \
    --data-urlencode 'client_secret=e._hTCMiSgT2zr6h0U4_AEg-3.tDE71Nz~' \
    --data-urlencode 'grant_type=client_credentials'

我正在从此端点获取访问令牌,但此访问令牌中没有权限。

所以,当我尝试发送邮件时,我收到以下错误。

请帮忙。 如果需要任何进一步的信息,请告诉我。

这些是我已经为发送电子邮件添加的权限,但仍然无法弄清楚问题所在。

【问题讨论】:

  • 您应在azure active directory 下添加Microsoft graph 的权限,然后在App Registration 下添加权限,然后在azure portal 上转到API Permission,请参阅link here。如果需要详细信息,请随时询问。
  • 您正在使用“(...)/.default”作为范围,这意味着使用您在 azure 门户中为注册的应用程序授予的默认权限。正如@MdFaridUddinKiron 所说,您必须在那里添加所需的权限。您还可以使用 MS 的 Graph Explorer 来确定所需的权限(在修改权限选项卡下):developer.microsoft.com/en-us/graph/graph-explorer
  • @MdFaridUddinKiron 我已经编辑了我的问题并添加了我包含的所有权限的屏幕截图。但我仍然无法发送电子邮件。
  • 因为你还没有接受grant admin consent,所以加上那个,你的问题就解决了。
  • @MdFaridUddinKiron 那么,无论谁是管理员,我都必须征求他的同意?

标签: c# permissions microsoft-graph-api postman sendmail


【解决方案1】:

您似乎还没有接受Grant admin consent,您可以像下面这样:

注意:添加所需权限后,只需单击Grant admin consent 按钮。您的页面应如上图所示。

更新:你应该有Mail.Send Application Permission 然后接受consent 希望它会允许令牌的权限。

希望这会有所帮助。如果您仍有任何疑虑,请告诉我。

【讨论】:

  • 但在您的情况下需要管理员同意是“是”,在我的情况下,需要管理员同意列在每一行中都显示“否”。请帮我解决这个问题。
  • 你是怎么做到的?您应该在azure tenant 中拥有global admin 角色
  • No 表示您不需要管理员权限,但请确保您的令牌具有Mail.Send 权限并在此处检查您的令牌https://jwt.io/ 但是为什么您的status 为空?它应该是 checked 就像我的示例一样
  • 我相信您正在尝试Dedicated permission,电子邮件添加Application permission。让我知道这是否有效。
  • 因为我猜你使用的是client_credential认证协议,需要应用权限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 2017-08-31
  • 1970-01-01
  • 2013-09-23
相关资源
最近更新 更多