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