问题描述
在通过 login.microsoftonline.com 对自己进行身份验证后,我有一个来自 Azure 的 JWT,其 iss
值为 https://sts.windows.net/...
(经过一些研究,这似乎是由于 {{ 1}} 的 JWT)。为了获得 "ver": 1.0
发布的 JWT,我更新了应用程序的清单,以便将 https://login.microsoftonline.com/...
设置为 accesstokenAcceptedVersion
,而不是默认情况下的 2
。
我等了 5 个多小时,但还是得到了错误版本的令牌,我一直在获取带有 null
和 "ver": 1.0
的 JWT。有没有我遗漏的步骤?
AuthConfig 的 "iss": "https://sts.windows.net/..."
的值为 scope
,我目前正在使用隐式流程(很快将更改为身份验证代码流程,但仅在 JWT 版本问题得到修复之后..)
提前致谢!
解决方法
访问令牌的版本与您用于请求令牌的端点无关,而是与您请求的资源相关。 ms graph api 的默认版本是 1.0
版本的令牌。如果您想获取 2.0
版本的令牌,您应该请求您的自定义 API。
首先需要创建一个代表api的应用,然后暴露Azure保护的api。
接下来,在“API 权限”下,授予前端应用程序访问后端 api 的权限:
- 在“API 权限”下点击“添加权限”,然后点击“我的 API”标签。
- 找到您的后端应用程序并选择适当的范围。
- 点击“添加权限”。
- 为您的 API 授予管理员许可。
接下来需要使用auth code flow获取访问令牌,需要先登录用户获取授权码,然后使用授权码兑换访问令牌。
>解析访问令牌,它会显示 v2。