gpt4 book ai didi

c# - System.IdentityModel.Tokens.JwtSecurityToken 自定义属性

转载 作者:太空狗 更新时间:2023-10-29 17:40:01 24 4
gpt4 key购买 nike

我的 AuthServer 当前正在使用以下代码生成 JwtSecurityToken:

var token = new JwtSecurityToken(_issuer, audienceId, data.Identity.Claims, issued.Value.UtcDateTime, expires.Value.UtcDateTime, signingKey);
var handler = new JwtSecurityTokenHandler();
var jwt = handler.WriteToken(token);

有效负载如下所示:

{
"unique_name": "myUserName",
"sub": "myUserName",
"role": "API_User",
"iss": "Automation",
"aud": "099153c2625149bc8ecb3e85e03f0022",
"exp": 1486056731,
"nbf": 1483464731
}

我想在 token 负载中添加一些自定义字段/属性,例如 ProfilePicURL,以便负载看起来像这样:

{
"unique_name": "myUserName",
"sub": "myUserName",
"role": "API_User",
"iss": "Automation",
"aud": "099153c2625149bc8ecb3e85e03f0022",
"exp": 1486056731,
"nbf": 1483464731,
"profilePicture": "http://url/user.jpg"
}

如何添加这些自定义属性并确保 token 包含它们?

最佳答案

JwtSecurityToken公开一个 JwtPayload Payload { get; set;} 属性(property)。 JwtPayload 源自 Dictionary<string, object>所以只需将它添加到有效负载中...

var token = new JwtSecurityToken(_issuer, audienceId, data.Identity.Claims, issued.Value.UtcDateTime, expires.Value.UtcDateTime, signingKey);
token.Payload["profilePicture"] = "http://url/user.jpg"
var handler = new JwtSecurityTokenHandler();
var jwt = handler.WriteToken(token);

请务必使用 WriteToken对 token 进行编码和签名,只需获取 RawData属性将不起作用( token 将不包含自定义声明)。

关于c# - System.IdentityModel.Tokens.JwtSecurityToken 自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41450141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com