Example #1
0
        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);
     }));
 }
Example #3
0
        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));
            }
        }
Example #4
0
 public OAuth2ResponseData RefreshToken(RefreshTokenRequestData refreshData)
 {
     return(_httpHelper.PostEncoded <RefreshTokenRequestData, OAuth2ResponseData>("/auth/oauth2/token", refreshData));
 }