JWT Token Claim abfragen
Wie kann man im Webserver eine den User eines Jwt Tokens abfragen?
Der Java WebToken enthält sogenannte Claims. Diese Claim-Informationen können beim Austausch abgefragt werden.
Der User eines Claims kann bei einer Anfrage in Asp Controller mit Claims/Name ermittelt werden
var user_in_token = HttpContext.User.Claims.Where(c => c.Type == ClaimsIdentity.DefaultNameClaimType).FirstOrDefault();
|
Ergebnis in diesem Fall:
Identity User-Name ist : myUser
Erstellt wurde der jwtToken im TokenController
public string create_UserToken(string sUsername) { //-------------< create_UserToken() >------------- Claim[] claims = new Claim[] { new Claim(ClaimTypes.Name, sUsername), //*->User.Identity.Name or "Raimund Popp" new Claim(JwtRegisteredClaimNames.Email, "raimund.popp@codedocu.de") };
//--< Create a Token >-- JwtSecurityToken jwtToken = new JwtSecurityToken( issuer: "website_freelancer", //ASP.NET Core web application audience: "webclients_freelancer", //client app claims: claims, notBefore: DateTime.Now, expires: DateTime.Now.AddDays(1), signingCredentials: new SigningCredentials(_secretKey, SecurityAlgorithms.HmacSha256) ); //--</ Create a Token >--
string stringToken = new JwtSecurityTokenHandler().WriteToken(jwtToken);
return stringToken; //-------------</ create_UserToken() >------------- } |
Unter den Claims kann man viele vordefiniert Informationen einbinden
Claim[] claims = new Claim[] { new Claim(ClaimTypes.Name, sUsername), //*->User.Identity.Name or "Raimund Popp" new Claim(ClaimTypes.UserData, "ID=123"), new Claim(JwtRegisteredClaimNames.Email, "raimund.popp@codedocu.de")
}; |
Eine Liste der ClaimTypes findet man unter
https://msdn.microsoft.com/de-de/library/system.security.claims.claimtypes(v=vs.110).aspx
die Wichtigsten ClaimTypes wären aus (Namespace: System.Security.Claims)
Asp.Net Core 2 MVC
Asp WebApi Api
JWT Java Web Token