我们已经为API授权集成了AzureAD,API授权工作正常,但看到Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter的错误日志,其中包含以下消息,
IDX 40003:从Microsoft身份平台获取的令牌中不存在tid
和tenantId
声明。
IDX 10516:签名验证失败。无法匹配密钥:kid:“*”。令牌验证参数中的密钥数:“16”。配置中的键数:“0”。捕获的异常:“[类型为”System.Text.StringBuilder“的PII已隐藏。有关详细信息,请参阅https://aka.ms/IdentityModel/PII.]”。标记:“[类型为”系统.身份模型.令牌.Jwt.JwtSecurityToken“的PII已隐藏。有关详细信息,请参阅https://aka.ms/IdentityModel/PII.]”。有效生存期:'False'。有效的出版者:'错误'**
我们的API被UI应用程序以及通过Swagger/Postman使用。
根本原因应该是什么?
1条答案
按热度按时间ghg1uchk1#
错误
IDX10516: Signature validation failed. Unable to match key: kid
发生在验证令牌签名的解码令牌中的Kid无效时。因此需要从openid提供程序加载密钥。代码:
添加以下内容,以检查
Startup.cs
中ConfigureServices
方法的更清晰描述性异常:IdentityModelEventSource.ShowPII = true
参考:Azure AD - Why can't I validate JWT token issued by Azure AD for my Web API? Getting "IDX10516: Signature validation failed" error - Stack Overflow