Exemple #1
0
        public async Task <string> GetTokenAsync(MyTypeWebClient typeClient, IHttpContextAccessor httpContextAccessor)
        {
            var sessionAuthResponse = GetSessionAuthResponse(httpContextAccessor);

            if (sessionAuthResponse != null)
            {
                DateTime currentUtcTime = DateTime.UtcNow;
                if (sessionAuthResponse.expirationDateTime < currentUtcTime) //token expired
                {
                    var refreshtoken = new RequestRefreshToken
                    {
                        token        = sessionAuthResponse.accessToken,
                        refreshToken = sessionAuthResponse.refreshToken
                    };

                    var authToken = await GetRefreshToken(typeClient, httpContextAccessor, refreshtoken);

                    if (authToken != null)
                    {
                        return(authToken.accessToken);
                    }
                }

                return(sessionAuthResponse.accessToken);
            }


            return(null);
        }
Exemple #2
0
        public async Task <IActionResult> RefreshToken(RequestRefreshToken refreshData)
        {
            var decodedToken   = new JwtSecurityTokenHandler().ReadToken(refreshData.refreshToken) as JwtSecurityToken;
            var userId         = decodedToken.Claims.First(claim => claim.Type == "id").Value;
            var expirationTime = Int32.Parse(decodedToken.Claims.First(claim => claim.Type == "exp").Value);
            var now            = DateTime.UtcNow.Subtract(DateTime.MinValue.AddYears(1969)).TotalSeconds;

            if (expirationTime < now)
            {
                return(BadRequest(new { errorText = "Token expired" }));
            }
            User user = _userService.Get(userId);

            if (user == null)
            {
                return(NotFound());
            }

            JWTAuthResponse response = _jwtHelper.refreshToken(user);

            return(Json(response));
        }
Exemple #3
0
        private async Task <AuthResponse> GetRefreshToken(MyTypeWebClient typeClient, IHttpContextAccessor httpContextAccessor, RequestRefreshToken requestRefreshToken)
        {
            string jsonStringIfyData = JsonConvert.SerializeObject(requestRefreshToken);
            var    contentType       = new MediaTypeWithQualityHeaderValue("application/json");

            typeClient.Client.DefaultRequestHeaders.Accept.Add(contentType);

            var contentData = new StringContent(jsonStringIfyData, System.Text.Encoding.UTF8, "application/json");

            var response = await typeClient.Client.PostAsync("/api/v2.2/Auth/RefreshToken", contentData);

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var responsecontent = await response.Content.ReadAsStringAsync();

                var refreshtokenresult = JsonConvert.DeserializeObject <RefreshTokenResponse>(responsecontent);
                if (refreshtokenresult.success)
                {
                    var tokenresponse = new AuthResponse
                    {
                        accessToken        = refreshtokenresult.token,
                        refreshToken       = refreshtokenresult.refreshToken,
                        expirationDateTime = refreshtokenresult.accessTokenExpiration,
                        dateIssued         = refreshtokenresult.issuedDate
                    };
                    var responseAuth = JsonConvert.SerializeObject(tokenresponse);

                    httpContextAccessor.HttpContext.Session.SetString("responseAuth", responseAuth);

                    return(tokenresponse);
                }
            }

            return(null);
        }