我正在尝试向.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
普通身份验证似乎可以正常工作,唯一的问题确实是无法检索自定义声明