public async Task <ActionResult <MainResponse> > TokenRefresh() { User user = HttpContext.GetUser(); if (user == null) { return(MainResponse.GetError(Enums.RequestError.UserNotFound)); } if (!HttpContext.Request.Cookies.Any(p => p.Key == "refresh-token")) { return(Forbid()); } Auth auth = _context.Auth.FirstOrDefault(p => p.RefreshToken == HttpContext.Request.Cookies["refresh-token"]); if (auth == null) { return(Forbid()); } auth.Token = RandomUtilities.GetCryptoRandomString(32); auth.RefreshToken = RandomUtilities.GetCryptoRandomString(32); auth.Expire = DateTime.Now.AddSeconds(_serverConfig.Users.TokenExpirationTime); _context.Auth.Update(auth); await _context.SaveChangesAsync(); HttpContext.Response.Cookies.Append("refresh-token", auth.RefreshToken, new CookieOptions() { Domain = coockieDomain, HttpOnly = true, Path = "/api/auth/token-refresh" }); HttpContext.Response.Cookies.Append("auth-token", auth.Token, new CookieOptions() { Domain = coockieDomain, HttpOnly = true, Path = "/api" }); HttpContext.Response.Cookies.Append("auth-token", auth.Token, new CookieOptions() { Domain = coockieDomain, HttpOnly = true, Path = "/sockets" }); TokenRefreshResponse response = new TokenRefreshResponse() { EncryptionKey = auth.LocalDataEncryptionKey }; return(MainResponse.GetSuccess(response)); }
public async Task RefreshToken() { var response = new TokenRefreshResponse { Jwt = "respondedJwt" }; var mockHandler = new MockMessageHandler <TokenRefreshResponse>(HttpStatusCode.OK, response); var agent = new TokenRefreshAgent(Options.Create(_options), _logger, mockHandler); var result = await agent.RefreshTokenAsync("token"); Assert.Equal(response.Jwt, result); }
public static string RefreshAuthToken(string baseUrl, AuthenticationHeaderValue ahv, string authTokenFilePath) { string curAuthToken = TokenTools.GetAuthToken(authTokenFilePath); var fs = new FileStream(authTokenFilePath, FileMode.Open); if (!fs.CanWrite) { throw new ApplicationException("The AuthToken file <" + authTokenFilePath + "> is not writable"); } fs.Close(); var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = ahv; client.BaseAddress = new Uri(baseUrl); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.github.v3+json")); client.DefaultRequestHeaders.Add("AuthToken", curAuthToken); try { HttpResponseMessage response = client.PostAsync("services/NWMSApiKeyRefreshService", null).Result; string result = response.Content.ReadAsStringAsync().Result; TokenRefreshResponse res = new TokenRefreshResponse(); res = Newtonsoft.Json.JsonConvert.DeserializeObject <TokenRefreshResponse>(result); if (response.IsSuccessStatusCode) { StreamWriter authFile = new StreamWriter(authTokenFilePath); authFile.Write(res.token); authFile.Close(); return(res.token); } else { throw new ApplicationException("An error occured when refreshing AuthToken"); } } catch (UnsupportedMediaTypeException ex) { Console.WriteLine("UnsupportedMediaType"); Console.WriteLine(ex); throw new ApplicationException("An error occured when refreshing AuthToken"); } catch (HttpRequestException ex) { Console.WriteLine("HttpRequestException"); Console.WriteLine(ex); throw new ApplicationException("An error occured when refreshing AuthToken"); } }
private bool RefreshToken() { var successful = false; var client = new RestClient(Constants.Spotify.AccountsBaseApi); var request = new RestRequest("token", Method.POST); request.AddHeader("content-type", "application/x-www-form-urlencoded"); request.AddParameter("application/x-www-form-urlencoded", $"grant_type=refresh_token&refresh_token={credentials.refreshToken}", ParameterType.RequestBody); request.AddHeader("Authorization", "Basic " + CommonUtil.Base64Encode(Constants.Spotify.ClientId + ":" + Constants.Spotify.ClientSecret)); IRestResponse response = client.Execute(request); if (response.IsSuccessful) { successful = true; TokenRefreshResponse refreshResponse = JsonConvert.DeserializeObject <TokenRefreshResponse>(response.Content); credentials.accessToken = refreshResponse.access_token; } return(successful); }