生成访问令牌时如何将 userid 参数添加到 jwt 的有效负载?
Posted
技术标签:
【中文标题】生成访问令牌时如何将 userid 参数添加到 jwt 的有效负载?【英文标题】:How to add userid parameter to payload of jwt when generate access token? 【发布时间】:2020-01-10 01:43:12 【问题描述】:如何在生成访问令牌时将userId
参数添加到jwt
的负载中?
我在asp.net core 2.2
上工作,我需要将userId
参数添加到生成访问令牌 的负载中,然后生成JSON 格式的结果。
public string GenerateTokens(string userId)
var Claims = new Claim[]
new Claim(JwtRegisteredClaimNames.Sub,userId)
;
var signingkey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("this is secret phrase"));
var SigningCredntials = new SigningCredentials(signingkey, SecurityAlgorithms.HmacSha256);
var Jwt = new JwtSecurityToken();
return new JwtSecurityTokenHandler().WriteToken(Jwt);
【问题讨论】:
有什么不清楚的地方 【参考方案1】:您应该在初始化JwtSecurityToken
实例时设置声明:
var Claims = new Claim[]
new Claim(JwtRegisteredClaimNames.Sub,"userid")
//your other claims
;
var signingkey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("this is secret phrase"));
var SigningCredntials = new SigningCredentials(signingkey, SecurityAlgorithms.HmacSha256);
var Jwt = new JwtSecurityToken(claims:Claims,signingCredentials:SigningCredntials);
return new JwtSecurityTokenHandler().WriteToken(Jwt);
JwtSecurityToken
的构造函数,也可以设置issue
,audience
,expires
..
public JwtSecurityToken(string issuer = null, string audience = null, IEnumerable<Claim> claims = null, DateTime? notBefore = null, DateTime? expires = null, SigningCredentials signingCredentials = null);
【讨论】:
添加用户 id 怎么办? 这样我需要添加用户名怎么办? 这是一件好事,但这是什么意思 JwtRegisteredClaimNames.Sub 有什么错误问题吗?如果回复有帮助,请考虑标记为答案。以上是关于生成访问令牌时如何将 userid 参数添加到 jwt 的有效负载?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Cognito:将自定义声明/属性添加到 JWT 访问令牌
keycloak 客户端协议映射器(脚本映射器)将请求标头添加到令牌中