我可以使用我的 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 进行身份验证,但是 Identity
的 Name
属性 为空。
虽然声明在那里。
这是分解后的 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 claims。 name
是自定义索赔的第一个。
我需要做一些技巧来让 ASP.NET 核心安全将我的 name
声明识别为 NameClaimType
吗?
为什么 email
声明得到认可?
它期待与您所拥有的不同的声明类型。
你可以这样设置:
.AddJwtBearer(o => o.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name"
})
这将改变它用于填充名称的声明。
我可以使用 JWT 向我的 ASP.NET Core 2.2 web api 进行身份验证,但是 Identity
的 Name
属性 为空。
虽然声明在那里。
这是分解后的 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 claims。 name
是自定义索赔的第一个。
我需要做一些技巧来让 ASP.NET 核心安全将我的 name
声明识别为 NameClaimType
吗?
为什么 email
声明得到认可?
它期待与您所拥有的不同的声明类型。 你可以这样设置:
.AddJwtBearer(o => o.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name"
})
这将改变它用于填充名称的声明。