public JsonResult Refresh([FromBody] AppTokenModel refreshModel) { var token = refreshModel.AccessToken; var refreshToken = refreshModel.RefreshToken; var principal = JwtHelper.GetPrincipalFromExpiredToken(token); var username = principal.Identity.Name; var savedRefreshToken = _refreshTokenRepository.Get(username); //retrieve the refresh token from a data store if (savedRefreshToken != refreshToken) { throw new SecurityTokenException("Invalid refresh token"); } var newJwtToken = JwtHelper.GenerateToken(principal.Claims); var newRefreshToken = RefreshTokenHelper.GenerateRefreshToken(); _refreshTokenRepository.Delete(username, refreshToken); _refreshTokenRepository.Save(username, newRefreshToken); return(Json(new AppTokenModel { AccessToken = newJwtToken, RefreshToken = newRefreshToken })); }
public IActionResult Refresh([FromBody] RefreshTokenModel refreshToken) { try { var principal = GetPrincipalFromExpiredToken(refreshToken.Token); var username = principal.Identity.Name; var savedRefreshToken = ""; savedRefreshToken = _userService.GetUserRefreshToken(username); //retrieve the refresh token from a data store if (savedRefreshToken != refreshToken.RefreshToken) { return(Ok(new { Status = PublicResultStatusCodes.NotAuthorized })); } var newJwtToken = _jwtTokenGenerator.GenerateAccessTokenWithClaimsPrincipal(username, principal.Claims); var newRefreshToken = RefreshTokenHelper.GenerateRefreshToken(); _userService.SaveUserRefreshToken(username, newRefreshToken); return(Ok(new { Status = PublicResultStatusCodes.Done, Data = new List <object> { new{ RefreshToken = newRefreshToken, Token = newJwtToken.AccessToken, ValidTokenTimeInMinutes = _token.ValidTimeInMinutes, ValidDateTimeToken = DateTime.Now.AddMinutes(_token.ValidTimeInMinutes) } } })); } catch (SecurityTokenException ex) { return(Ok(new { Status = PublicResultStatusCodes.NotAuthorized })); } }
public JsonResult Token([FromBody] Form form) { var username = form.UserName; var password = form.Password; var identity = GetIdentity(username, password); if (identity == null) { Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json("Invalid username or password.")); } var encodedJwt = JwtHelper.GenerateToken(identity.Claims); var refreshToken = RefreshTokenHelper.GenerateRefreshToken(); _refreshTokenRepository.Delete(username); _refreshTokenRepository.Save(username, refreshToken); var response = new AppTokenModel { AccessToken = encodedJwt, RefreshToken = refreshToken, Username = identity.Name }; return(Json(response)); }
private void HashNewUserPassword(ref User user, string username) { if (!string.IsNullOrEmpty(username)) { var currentUser = _repository.GetUserByUsername(username); user.IDEntryUser = currentUser.IDEntryUser; user.EntryUser = currentUser.Account; } user.EntryDate = DateTime.Now; user.IsActive = true; user.RefreshToken = RefreshTokenHelper.GenerateRefreshToken(); user.Password = string.IsNullOrWhiteSpace(user.Password) ? user.Password : ""; var hashHelper = new HashHelper(user.Password); user.Password = hashHelper.Hash; user.SaltedPassword = hashHelper.Salt; user.LatestPasswordChangeDate = DateTime.Now; }