web-dev-qa-db-fra.com

Propriétés personnalisées System.IdentityModel.Tokens.JwtSecurityToken

Mon AuthServer utilise actuellement le code suivant pour générer un 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);

La charge utile ressemble à ceci:

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

J'aimerais ajouter des champs/propriétés personnalisés dans la charge de jeton, tels que ProfilePicURL, afin que la charge puisse ressembler à ceci:

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

Comment puis-je ajouter ces propriétés personnalisées et m'assurer que le jeton les contient?

6
blgrnboy

JwtSecurityToken expose une JwtPayload Payload { get; set;} property. JwtPayload dérive de Dictionary<string, object> alors ajoutez-le simplement à la charge utile ...

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);
11
Nkosi

Voici un tutoriel qui montre comment générer un JWT personnalisé en C #: https://auth0.com/docs/tutorials/generate-jwt-dotnet

Et voici l'exemple de code: https://github.com/auth0/auth0.net/tree/master/examples/GenerateJWT/GenerateJWT

Cordialement, Sagar

0
user2198533