我创建了一个示例MVC应用程序,它使用身份服务器对Google进行身份验证。验证工作正常,但当响应返回时,它缺少“子”声明并最终出现“子声明丢失”的错误。
我读了几篇关于将nameidentifier映射到sub的claimmapping的文章。但不知道该怎么做。有些博客说要通知谷歌发布子索赔。但又不知道该怎么做。
期待一些帮助!
答案 0 :(得分:2)
也许与我昨天看到的相似。我找到了解决方法here
默认情况下,一些标准声明基本上会映射到MS专有键。您可以通过执行以下操作来阻止:JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
希望有所帮助!
答案 1 :(得分:0)
查看JwtSecurityTokenHandler.InboundClaimTypeMap。它允许您指定JWT的声明如何映射到ClaimsIdentity中的声明。 另一个选择是调查OIDC中间件暴露的事件,它们可能允许您拦截和操纵从Google返回的声明。
答案 2 :(得分:0)
或更具体地说,您还可以使用以下内容
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Remove("sub");