2017-01-03 3 views
1

Mein AuthServer derzeit mit dem folgenden Code ein JwtSecurityToken zu generieren:System.IdentityModel.Tokens.JwtSecurityToken benutzerdefinierte Eigenschaften

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

Die Nutzlast sieht wie folgt aus:

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

Ich mag würde hinzufügen einige benutzerdefinierte Felder/Eigenschaften innerhalb der Token-Nutzlast, z. B. "ProfilePicURL", sodass die Nutzdaten in etwa wie folgt aussehen können:

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

Wie gehe ich vor, diese benutzerdefinierten Eigenschaften hinzuzufügen und sicherzustellen, dass das Token sie enthält?

+0

es auf die Payload-Eigenschaft hinzufügen, die von 'Dictionary abgeleitet ist' 'dh token.Payload [ "profilePicture"] = "http: //url/user.jpg" ' – Nkosi

Antwort

2

JwtSecurityToken ein aussetzt JwtPayload Payload { get; set;} Eigentum. JwtPayload leitet sich von Dictionary<string, object> so ist es nur auf die Nutzlast hinzufügen ...

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); 
+0

Danke !! Konnte das nirgendwo finden, wusste nicht, dass es ein Wörterbuch war, das man bearbeiten konnte! – Gaspa79

Verwandte Themen