1

在通过 login.microsoftonline.com 对自己进行身份验证后,我有一个来自 Azure 的 JWT,它的iss价值是https://sts.windows.net/...(经过一些研究,这似乎是由于"ver": 1.0JWT 的原因)。为了获得由https://login.microsoftonline.com/...我发布的 JWT,我更新了应用程序的清单,以便将其accessTokenAcceptedVersion设置为2,而不是null按照默认设置。

我等了 5 个多小时,但我仍然得到了错误版本的令牌,我一直在用"ver": 1.0and获取 JWT "iss": "https://sts.windows.net/..."。有没有我遗漏的步骤?

scopeAuthConfig 的值,openid我目前正在使用隐式流(将很快更改为身份验证代码流,但仅在修复 JWT 版本问题之后..)

提前致谢!

4

1 回答 1

0

访问令牌的版本与您用于请求令牌的端点无关,但与您请求的资源有关。ms graph api 的默认版本是 version 的令牌1.0。如果您想获取2.0令牌的版本,您应该请求您的自定义 api。

首先,您需要创建一个代表 api 的应用程序,然后公开受 Azure 保护的 api。

在此处输入图像描述

接下来,在“API 权限”下,让您的前端应用程序访问您的后端 API:

  • 在“API 权限”下单击“添加权限”,然后单击“我的 API”选项卡。
  • 找到您的后端应用程序并选择适当的范围。
  • 单击“添加权限”。
  • 为您的 API 授予管理员许可。

在此处输入图像描述

接下来需要使用授权码流程获取访问令牌,需要登录用户获取授权码,然后使用授权码兑换访问令牌。

在此处输入图像描述

解析访问令牌,它将显示 v2。

在此处输入图像描述

于 2021-01-21T09:26:36.817 回答