public async Task <RefreshTokenResponseData> RefreshToken(RefreshTokenRequestData model, string ip) { var refreshTokenLifeTime = ValidateClientAuthentication(model.ClientId, model.ClientSecret); ClaimsPrincipal principal = null; try { principal = TokenUtility.GetPrincipalFromExpiredToken(_appConfig.GetSection("AppConfiguration"), model.Token); } catch (Exception ex) { throw new ApplicationException("Token Error: Invalid token"); } var username = principal.Identity.Name; var savedRefreshToken = await _authTokenServ.GetRefreshToken(model.ClientId, username, model.RefreshToken); if (savedRefreshToken == null) { throw new ApplicationException("Token Error: Invalid refresh token"); } var newJwtToken = TokenUtility.GenerateJwtSecurityToken(_appConfig.GetSection("AppConfiguration"), principal.Claims); var newRefreshToken = TokenUtility.GenerateRefreshToken(); await _authTokenServ.RemoveRefreshToken(savedRefreshToken); await SaveRefreshToken(model.ClientId, username, newRefreshToken, refreshTokenLifeTime, ip); return(new RefreshTokenResponseData() { Token = new JwtSecurityTokenHandler().WriteToken(newJwtToken), TokenExpires = newJwtToken.ValidTo, TokenIssued = newJwtToken.ValidFrom, RefreshToken = newRefreshToken }); }
public async Task <ResponseBase <RefreshTokenResponseData> > RefreshToken([FromBody] RefreshTokenRequestData model) { return(await ExecuteRequestAsync(() => { var ip = HttpContext.Features.Get <IHttpConnectionFeature>()?.RemoteIpAddress?.ToString(); return _signInService.RefreshToken(model, ip); })); }
public ActionResult RefreshToken([FromBody] RefreshTokenRequestData refreshData) { try { var result = _authenticationService.RefreshToken(refreshData); if (result == null) { return(NoContent()); } return(Ok(result)); } catch (Exception exc) { return(StatusCode(StatusCodes.Status500InternalServerError)); } }
public OAuth2ResponseData RefreshToken(RefreshTokenRequestData refreshData) { return(_httpHelper.PostEncoded <RefreshTokenRequestData, OAuth2ResponseData>("/auth/oauth2/token", refreshData)); }