using System; using System.IdentityModel.Tokens; using System.Security.Claims; using iiie.Authentication.DBO; namespace iiie.Authentication.Business.JWT { /// /// Token creation class /// public static class TokenManager { /// /// Create signing credentials to sign the token /// /// The credentials private static SigningCredentials CreateSigningCredentials() { string symmetricKey = AuthProvider.Instance.GetCredentialKey(); byte[] keybytes = Convert.FromBase64String(symmetricKey); SecurityKey securityKey = new InMemorySymmetricSecurityKey(keybytes); SigningCredentials signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature, SecurityAlgorithms.Sha256Digest); return signingCredentials; } /// /// Create a JWT token /// /// The user /// The token public static string GetToken(UserDboAuth user, String salt) { var stringValidator = AuthProvider.Instance.GetValidatorString(); JwtSecurityToken jst = new JwtSecurityToken("urn:" + stringValidator, stringValidator, new Claim[] { new Claim(ClaimTypes.Name, user.Username), new Claim(ClaimTypes.Authentication, salt) }, null, DateTime.Now.AddDays(1), CreateSigningCredentials()); JwtSecurityTokenHandler jh = new JwtSecurityTokenHandler(); return jh.WriteToken(jst); } } }