public IActionResult Create([FromForm] JWTInput request) { var jwtResponse = TokenService.Authenticate(request); TempData["encoded"] = jwtResponse; return(RedirectToAction("Index")); }
public static string Authenticate(JWTInput input) { List <Claim> claims = new List <Claim>(); if (input.Claims.Count() > 0) { input.Claims?.ForEach(x => claims.Add(new Claim(x.Type, x.Value))); } var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(input.Key); var tokenDescriptor = new SecurityTokenDescriptor { IssuedAt = DateTime.Now, Issuer = input.Iss, Audience = input.Aud, Subject = new ClaimsIdentity(claims.ToArray()), Expires = DateTime.UtcNow.AddDays(7), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), Create(input.Algorithm)) }; var token = tokenHandler.CreateToken(tokenDescriptor); var result = tokenHandler.WriteToken(token); return(result); }
/// <summary> /// Create Json Web Token /// </summary> /// <param name="jWTInput"></param> /// <param name="claims"></param> /// <returns></returns> public async Task <string> GenerateJWTToken(JWTInput jWTInput, IEnumerable <Claim> claims) { var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jWTInput.Key)); var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken(jWTInput.Issuer, jWTInput.Issuer, claims, expires: jWTInput.ExpiresOn, signingCredentials: credentials); return(new JwtSecurityTokenHandler().WriteToken(token)); }
public JWTController() { jwtInput = new JWTInput(); }