Microsoft 身份验证请求使用访问令牌的其他范围



Microsoft认证在我看来非常复杂。有这么多的流程和东西去!

所以我目前正在做的是

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

我现在要做的是:

  • 我正在尝试访问 Microsoft 图形终结点以读取有关用户 AAD 的信息。
  • 我无法使用上面的现有令牌,因为这个令牌只有user_importation范围https://admin.services.crm.dynamics.com/
  • 我必须请求另一个范围为user.read的令牌

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

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

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

否,不能使用访问令牌获取具有附加范围的新访问令牌

如前所述,可以使用刷新令牌为另一个范围请求新的访问令牌。刷新令牌没有指定的生存期。通常,刷新令牌的生存期相对较长。尽管刷新令牌在用于获取新的访问令牌时不会被吊销,但应丢弃旧的刷新令牌。

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

您可以参考本教程。

您正在寻找的方案称为增量同意。这在 MSAL 中是完全可行的。顺便说一下,很高兴知道您正在开发什么平台。

您可以做的是为user.read请求访问令牌,并期望抛出MsalUiRequiredException。在其捕获中,您以user.read作为范围进行交互式调用。使用此方法,您将实现增量同意。请注意,在此之后,user_impersonation仍将可用,并且令牌缓存现在将同时具有这两个作用域。

相关内容

  • 没有找到相关文章