温馨提示:本文翻译自stackoverflow.com,查看原文请点击:azure active directory - Microsoft Authentication request additional scope with Access Token
azure-active-directory microsoft-graph msal

azure active directory - Microsoft身份验证请求具有访问令牌的其他范围

发布于 2020-04-08 00:09:30

在我看来,Microsoft身份验证非常复杂。有这么多的流量和东西!

所以我目前正在做的是

  1. 使用授权代码流获取特定范围的令牌。我正在使用以下范围:(https://admin.services.crm.dynamics.com//user_impersonation据我所知,我只能为单个范围/受众群体请求令牌)
  2. 令牌工作正常。我可以使用收到的不记名令牌访问动态管理中心。

我现在想做的是以下内容:

  • 我正在尝试访问Microsoft Graph端点以读取有关用户AAD的信息。
  • 我不能使用现有令牌上面,因为这一个不仅具有user_importation用于范围https://admin.services.crm.dynamics.com/
  • 我必须请求另一个令牌与范围 user.read

那就是我被困住的地方。如何使用现有的access_token请求其他范围?

我可以将oauth2/v2.0/token端点与刷新令牌结合使用,以请求另一个作用域(user.read的令牌这工作正常,但我不想为此使用刷新令牌,而要使用access_token。这甚至可能并且有意义吗?

查看更多

提问者
Simon
被浏览
72
Joey Cai 2020-01-30 20:06

这甚至可能并且有意义吗?

不可以,您不能使用访问令牌来获取具有附加作用域的新访问令牌

如您所说,可以使用刷新令牌为另一个作用域请求新的访问令牌。刷新令牌没有指定的生存期。通常,刷新令牌的生命周期相对较长。尽管刷新令牌在用于获取新的访问令牌时不会被撤消,但是您还是应该丢弃旧的刷新令牌。

POST /{tenant}/oauth2/v2.0/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&scope=https://admin.services.crm.dynamics.com/user_impersonation user.read
&refresh_token=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq...
&grant_type=refresh_token
&client_secret=JqQX2PNo9bpM0uEihUPzyrh      // NOTE: Only required for web apps

您可以参考本教程