The code below works fine at generating new tokens from a valid token but not an expired one.
[HttpPost]
[Route("refreshtoken")]
public async Task<IActionResult> RefreshToken()
{
    var identity = User.Identity as ClaimsIdentity;
    var username = identity.FindFirst("user");
    if (username.Value != null)
    {
        var user = await _userManager.FindByNameAsync(username.Value);
        var token = GenerateToken(user);
        return Ok(token);
    }
    return BadRequest("Could not refresh token");
}
As soon as I try to refresh an invalid token I get the error message NullReferenceException: Object reference not set to an instance of an object. Having looked at the error logs then username.Value == null so it appears I am unable to get claims from an expired token.
Is there a better way to generate a refresh token from expired tokens?
 
     
    