在 TokenValidated 事件上添加额外声明
Add additional claims on TokenValidated event
在我的 ASP.NET Core 1.1 应用程序中,我使用 JWT 令牌进行身份验证。
在某些情况下,我需要向用户添加令牌中未提供的额外声明。
所以我连接到 IJwtBearerEvents.TokenValidated
事件并尝试在该事件处理程序中添加额外的声明。我尝试了几件事:
// (1) - doesn't work
((ClaimsIdentity)context.HttpContext.User.Identity).AddClaim(myNewClaim);
// (2) - doesn't work
var jwtToken = context.SecurityToken as JwtSecurityToken;
((ICollection<Claim>)jwtToken.Claims).Add(myNewClaim);
// (3) - doesn't work
context.HttpContext.User.AddIdentity(new ClaimsIdentity(new Claim[] { myNewClaim }));
无论我怎么做,我都没有在控制器操作的 User.Claims
中看到这些附加声明。
不记名令牌验证成功后添加额外声明的正确方法是什么?
@MarkG 链接的文章显示了访问声明的第四种方法 - 这个有效:
// (4) - works!
(context.Ticket.Principal.Identity as ClaimsIdentity).AddClaim(myNewClaim);
在我的 ASP.NET Core 1.1 应用程序中,我使用 JWT 令牌进行身份验证。 在某些情况下,我需要向用户添加令牌中未提供的额外声明。
所以我连接到 IJwtBearerEvents.TokenValidated
事件并尝试在该事件处理程序中添加额外的声明。我尝试了几件事:
// (1) - doesn't work
((ClaimsIdentity)context.HttpContext.User.Identity).AddClaim(myNewClaim);
// (2) - doesn't work
var jwtToken = context.SecurityToken as JwtSecurityToken;
((ICollection<Claim>)jwtToken.Claims).Add(myNewClaim);
// (3) - doesn't work
context.HttpContext.User.AddIdentity(new ClaimsIdentity(new Claim[] { myNewClaim }));
无论我怎么做,我都没有在控制器操作的 User.Claims
中看到这些附加声明。
不记名令牌验证成功后添加额外声明的正确方法是什么?
@MarkG 链接的文章显示了访问声明的第四种方法 - 这个有效:
// (4) - works!
(context.Ticket.Principal.Identity as ClaimsIdentity).AddClaim(myNewClaim);