未在HttpContext.User.Claims中设置的自定义JWT声明

时间:2020-02-01 21:13:59

标签: .net asp.net-core jwt

我正在尝试向.NET Core 3.1中的JWT令牌添加自定义声明。我正在这样创建令牌:

var claims = new List<Claim>
{
    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
    new Claim(CustomClaimTypes.TenantId, user.TenantId.ToString()),
    new Claim(JwtRegisteredClaimNames.Sub, user.Id.ToString()),
    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
};

var token = new JwtSecurityToken(
    claims: claims,
    issuer: "...",
    audience: "...",
    expires: DateTime.Now.AddDays(30d),
    signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)
);

return handler.WriteToken(token);

我要添加的自定义声明是guid中设置的名为tentant_id的{​​{1}}。 稍后,我尝试在这样的租户提供者中撤消该请求:

CustomClaimTypes

其中var identity = _accessor?.HttpContext.User.Identity as ClaimsIdentity; if (identity != null) { var claims = identity.Claims; } _accessor。但是由于某种原因,我只看到4个声明,而不是我添加的一个声明: Screenshot


修改: 我正在Startup.cs中注册这样的JWT:

IHttpContextAccessor

普通身份验证似乎可以正常工作,唯一的问题确实是无法检索自定义声明

0 个答案:

没有答案