我可以使用我的 JWT 进行身份验证,但我的 ASP.NET 核心应用程序无法识别我的姓名声明

I can Authenticate with my JWT but my Name claim is not recognised in my ASP.NET Core application

我可以使用 JWT 向我的 ASP.NET Core 2.2 web api 进行身份验证,但是 IdentityName 属性 为空。

虽然声明在那里。

这是分解后的 JWT:

{
  "id": "1-A",
  "name": "Pure Krome",
  "email": "<snip>",
  "picture": "https://<snip>",
  "locale": "en-au",
  "permissions": [
    <snip>
  ],
  "iss": "<snip>",
  "sub": "google-oauth2|<snip>",
  "aud": "<snip>",
  "exp": 1597609078,
  "iat": 1496325742
}

这是服务器看到的内容:

还有 .. 似乎 "recognise" 我的电子邮件声明,但是? (注意:我只是混淆了真实的电子邮件值)

所以我认为 name 不是一个公认的声明..所以我试着看看是否有一些标准规则,并找到了 IANA has a list of reserved and custom claimsname 是自定义索赔的第一个。

我需要做一些技巧来让 ASP.NET 核心安全将我的 name 声明识别为 NameClaimType 吗?

为什么 email 声明得到认可?

它期待与您所拥有的不同的声明类型。 你可以这样设置:

.AddJwtBearer(o => o.TokenValidationParameters = new TokenValidationParameters
{
    NameClaimType = "name"
})

这将改变它用于填充名称的声明。