nzp*_*mad 9 jwt single-page-application owin azure-active-directory
我有一个源自 Identity Platform 示例的 SPA 应用程序,该示例最初调用图形 API。
我已更改端点以调用本地 API。
SPA 使用 Azure AD 进行身份验证。
API 示例源自 API 的 VS 2019 项目模板。
,NET 4.7.2 - 无 .NET Core。
我可以进行身份验证,并且在进行网络跟踪时 ID 和访问令牌都存在。
但是,在 API 方面我收到错误:
"IDX10511: Signature validation failed. Keys tried: 'Microsoft.IdentityModel.Tokens.X509SecurityKey, KeyId: '1E50B4475DAC931359D564309A3385FFAB7FB431', InternalId: 'f61f7746-3cff-4557-8b2c-b47fad9cf1e3'. , KeyId: 1E50B4475DAC931359D564309A3385FFAB7FB431"
Run Code Online (Sandbox Code Playgroud)
解码访问令牌显示:
"{
"typ": "JWT",
"nonce": "G0Q6_BuYJUfZaBnX-l1Ox1eoncxXRT4KMThFBcn1-VA",
"alg": "RS256",
"x5t": "HlC0R12skxNZ1WQwmjOF_6t_tDE",
"kid": "HlC0R12skxNZ1WQwmjOF_6t_tDE"
}"
Run Code Online (Sandbox Code Playgroud)
谷歌搜索一下,似乎签名因标头中的随机数而失败,这需要“特殊处理”。
所有验证均由 OWIN 完成。
知道这是什么或如何解决这个问题吗?
nzp*_*mad 12
我不认为这是配置问题,因为我从未见过任何指定签名的配置。
所以我开始浏览 msal.js - 它是开源的。
“User.Read”(我使用的示例中定义的范围)在多个位置进行了硬编码,因此我从示例中删除了该范围并创建了一个名为“abc”的虚拟范围。
我还针对范围更改重新配置了 Azure AD。
你瞧,一切正常。
更有趣的是,标题是不同的:
{
"typ": "JWT",
"alg": "RS256",
"x5t": "HlC0R12skxNZ1WQwmjOF_6t_tDE",
"kid": "HlC0R12skxNZ1WQwmjOF_6t_tDE"
}
Run Code Online (Sandbox Code Playgroud)
请注意,没有随机数。
所以我怀疑,因为原始示例使用了 Microsoft Graph,“User.Read”意味着一些特殊的图形处理,添加了搞砸签名的随机数。
以供参考。
| 归档时间: |
|
| 查看次数: |
5733 次 |
| 最近记录: |