/// <summary> /// Generates a serialized JWT /// </summary> /// <param name="username">The username that will be put in the token</param> public static string GenerateToken(string username, int companyID) { var symterticKey = Convert.FromBase64String(HBTokenParameters.GetSecret()); var tokenHandler = new JwtSecurityTokenHandler(); var now = DateTime.UtcNow; var tokenDescriptor = new SecurityTokenDescriptor { Subject = new System.Security.Claims.ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, username), new Claim(ClaimTypes.UserData, Convert.ToString(companyID)) }), Audience = HBTokenParameters.GetAudience(), Issuer = HBTokenParameters.GetIssuer(), Expires = now.AddDays(30), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(symterticKey), SecurityAlgorithms.HmacSha256Signature) }; var stoken = tokenHandler.CreateToken(tokenDescriptor); var token = tokenHandler.WriteToken(stoken); return(token); }
/// <summary> /// Validate the token and return the claims principle or else return null /// </summary> public static ClaimsPrincipal GetPrincipal(string token) { try { var tokenHandler = new JwtSecurityTokenHandler(); var jwtToken = tokenHandler.ReadToken(token) as JwtSecurityToken; if (jwtToken == null) { return(null); } var symmetricKey = Convert.FromBase64String(HBTokenParameters.GetSecret()); var validationParameters = new TokenValidationParameters() { RequireExpirationTime = true, ValidateIssuer = true, ValidIssuer = HBTokenParameters.GetIssuer(), ValidateAudience = true, ValidAudience = HBTokenParameters.GetAudience(), IssuerSigningKey = new SymmetricSecurityKey(symmetricKey) }; var principal = tokenHandler.ValidateToken(token, validationParameters, out SecurityToken securityToken); return(principal); } catch (Exception) { return(null); } }