System.IdentityModel.Tokens.JwtSecurityToken自定义属性

我的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 } 

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

 { "unique_name": "myUserName", "sub": "myUserName", "role": "API_User", "iss": "Automation", "aud": "099153c2625149bc8ecb3e85e03f0022", "exp": 1486056731, "nbf": 1483464731, "profilePicture": "http://sofzh.miximages.com/c%23/user.jpg" } 

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

JwtSecurityToken公开了一个JwtPayload Payload { get; set;} JwtPayload Payload { get; set;}属性。 JwtPayload派生自Dictionary所以只需将其添加到有效负载中……

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

这是一个教程,演示如何使用C#生成自定义JWT: https : //auth0.com/docs/tutorials/generate-jwt-dotnet

以下是示例代码: https : //github.com/auth0/auth0.net/tree/master/examples/GenerateJWT/GenerateJWT

问候,萨格尔