public async Task <TokenOutputDto> RefreshToken(TokenInputDto model) { var user = await _userManager.FindByEmailAsync(model.Email); var checkRefreshToken = await _userManager.VerifyUserTokenAsync(user, "BBC", "RefreshToken", model.RefreshToken); if (checkRefreshToken) { //set new refresh token model.RefreshToken = await _userManager.GenerateUserTokenAsync(user, "BBC", "RefreshToken"); await _userManager.SetAuthenticationTokenAsync(user, "BBC", "RefreshToken", model.RefreshToken); var tokenModel = new TokenOutputDto() { UserId = user.Id, UserName = user.UserName, HasVerifiedEmail = true, RefreshToken = model.RefreshToken }; JwtSecurityToken jwtSecurityToken = await CreateJwtToken(user); tokenModel.Token = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken); return(tokenModel); } return(new TokenOutputDto() { Errors = new string[] { "Not Found User", } }); }
public TokenOutputDto Generation(User user) { ClaimsIdentity identity = new ClaimsIdentity( new GenericIdentity(user.Id.ToString(), "Login"), new[] { new Claim(JwtRegisteredClaimNames.Jti, user.Id.ToString()), new Claim(JwtRegisteredClaimNames.UniqueName, user.Name), new Claim("UserId", user.Id.ToString()), new Claim("UserName", user.Name), new Claim("Profile", user.Profile.Name), } ); var handler = new JwtSecurityTokenHandler(); var securityToken = handler.CreateToken(new SecurityTokenDescriptor() { Issuer = _tokenConfiguration.Issuer, Audience = _tokenConfiguration.Audience, SigningCredentials = _siginConfigurations.signingCredentials, Subject = identity, NotBefore = DateTime.Now, Expires = DateTime.Now.AddSeconds(_tokenConfiguration.Seconds) }); var token = new TokenOutputDto { Token = handler.WriteToken(securityToken), RefreshToken = Guid.NewGuid().ToString(), UserId = user.Id }; SaveCache(token); return(token); }
public async Task <TokenOutputDto> CreateToken(LoginInputDto model) { var tokenModel = new TokenOutputDto() { HasVerifiedEmail = false }; var user = await _userManager.FindByEmailAsync(model.Email); if (user == null) { tokenModel.Errors = new string[] { "Not Found User" }; return(tokenModel); } //if (!_environment.IsDevelopment()) //{ // if (!user.EmailConfirmed) // { // tokenModel.Errors = new string[] { "No Email Confirmed" }; // return tokenModel; // } // if (user.LockoutEnabled) // { // tokenModel.Errors = new string[] { "This account has been locked." }; // return tokenModel; // } //} if (await _userManager.CheckPasswordAsync(user, model.Password)) { tokenModel.HasVerifiedEmail = true; tokenModel.UserId = user.Id; tokenModel.UserName = user.UserName; var roles = await _userManager.GetRolesAsync(user); tokenModel.Roles = roles.ToList(); JwtSecurityToken jwtSecurityToken = await CreateJwtToken(user); tokenModel.Token = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken); tokenModel.RefreshToken = await _userManager.GetAuthenticationTokenAsync(user, "BBC", "RefreshToken"); if (String.IsNullOrEmpty(tokenModel.RefreshToken)) { tokenModel.RefreshToken = await _userManager.GenerateUserTokenAsync(user, "BBC", "RefreshToken"); await _userManager.SetAuthenticationTokenAsync(user, "BBC", "RefreshToken", tokenModel.RefreshToken); } return(tokenModel); } tokenModel.Errors = new string[] { "Invalid login attempt." }; return(tokenModel); }
public ActionResult RefreshToken(RefreshTokenInputDto refreshTokenInput) { TokenOutputDto token = null; if (IsModelValid() && refreshTokenInput.GrantType.ToLower().Equals("refresh_token")) { var user = _service.FindById(CurrentUser); token = _tokenService.RenewToken(refreshTokenInput, user); } return(CustomizeResponse(token)); }
private void SaveCache(TokenOutputDto token) { var refreshTokenData = new RefreshTokenDto { UserId = token.UserId, RefreshToken = token.RefreshToken }; var timeExpresion = TimeSpan.FromSeconds(_tokenConfiguration.RefreshTokenSeconds); DistributedCacheEntryOptions optionsCahce = new DistributedCacheEntryOptions(); optionsCahce.SetAbsoluteExpiration(timeExpresion); _cache.SetString(refreshTokenData.RefreshToken, JsonConvert.SerializeObject(refreshTokenData), optionsCahce); }
public ActionResult GenerationToken(UserInputDto userInput) { TokenOutputDto token = null; if (IsModelValid()) { var user = _service.FindByEmailAndPassword(userInput); if (user == null) { AddError("Usuário e senha invalido"); } else { token = _tokenService.Generation(user); } } return(CustomizeResponse(token)); }