public static string GenerateJWTToken(User userInfo, JWTResource jwtResource) { var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtResource.SecretKey)); var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256); var claims = new[] { new Claim(JwtRegisteredClaimNames.Sub, userInfo.UserName), new Claim(ClaimConfig.CLAIM_USER_ID, userInfo.Id.ToString()), new Claim(ClaimConfig.CLAIM_FULLNAME, userInfo.Name.ToString()), new Claim(ClaimConfig.CLAIM_ROLE, userInfo.Role.ToString()), new Claim(ClaimConfig.CLAIM_SUBSCRIPTION_TYPE, userInfo.SubscriptionType.ToString()), new Claim(ClaimConfig.CLAIM_LICENSE_PLAN, userInfo.LicensePlan.ToString()), new Claim(ClaimConfig.CLAIM_COUNTRY_CODE, userInfo.Country.Code), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), }; var token = new JwtSecurityToken( issuer: jwtResource.Issuer, audience: jwtResource.Audience, claims: claims, expires: DateTime.Now.AddMinutes(30), signingCredentials: credentials ); return(new JwtSecurityTokenHandler().WriteToken(token)); }
public async Task <IActionResult> Login([FromBody] LoginCredential login) { IActionResult response = Unauthorized(); var user = await _userService.AuthenticateUser(login); if (user != null) { JWTResource jwtResource = new JWTResource { SecretKey = _config["Jwt:SecretKey"], Issuer = _config["Jwt:Issuer"], Audience = _config["Jwt:Audience"] }; var tokenString = JWTHelper.GenerateJWTToken(user, jwtResource); response = Ok(new { token = tokenString, userDetails = user, }); } return(response); }