“ Azure AD SPA应用程序的IDX10511:签名验证失败”

问题描述 投票:0回答:1

我有一个从Identity Platform示例派生的SPA应用程序,该示例最初称为Graph 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"

解码访问令牌显示:

"{
  "typ": "JWT",
  "nonce": "G0Q6_BuYJUfZaBnX-l1Ox1eoncxXRT4KMThFBcn1-VA",
  "alg": "RS256",
  "x5t": "HlC0R12skxNZ1WQwmjOF_6t_tDE",
  "kid": "HlC0R12skxNZ1WQwmjOF_6t_tDE"
}"

谷歌搜索,似乎签名由于头中的随机数而失败,这需要“特殊处理”。

所有验证均由OWIN完成。

任何想法这是什么或如何解决?

jwt azure-active-directory owin single-page-application
1个回答
0
投票
所以我开始浏览msal.js-它是开源的。

“ User.Read”(在我使用的示例中定义的范围)在许多地方都进行了硬编码,因此我从示例中删除了该范围,并创建了一个名为“ abc”的虚拟对象。

我还为范围更改重新配置了Azure AD。

瞧,一切正常。

更有趣的是,标题也不同:

{ "typ": "JWT", "alg": "RS256", "x5t": "HlC0R12skxNZ1WQwmjOF_6t_tDE", "kid": "HlC0R12skxNZ1WQwmjOF_6t_tDE" }

注意,没有随机数。

因此,我怀疑由于原始示例使用了Microsoft Graph,因此“ User.Read”暗含了一些特殊的Graph处理,该处理添加了会加重签名的随机数。

对于reference

© www.soinside.com 2019 - 2024. All rights reserved.