public async Task <string> GenerateRefreshToken(string sub) { //Save new refresh token in db var refreshKey = Guid.NewGuid().ToString(); var expires = Clock.InUtc() .GetCurrentInstant() .Plus(Duration.FromMinutes(_refreshTimeout)); var refreshToken = await _refreshTokenRepository.CreateNewToken(refreshKey, sub, expires); //refresh claims var claims = new List <Claim> { new Claim("sub", refreshToken.Sub), new Claim("refresh_key", refreshKey) }; //generate jwt return(CreateToken(claims, Clock.InUtc().GetCurrentInstant(), expires, _refreshSecret)); }