public bool Validate(JwtSecurityToken token) { var audience = token.Audiences.FirstOrDefault(); var savedToken = _refreshTokenDAL.GetByAudience(audience); return(token == null ? false : savedToken.Expire > DateTime.UtcNow); }
public TokenViewModel UpdateAccessToken(string refreshTokenString) { var handler = new JwtSecurityTokenHandler(); if (!handler.CanReadToken(refreshTokenString)) { throw new RefreshTokenExpiredException("Refresh token is not correct"); } var refreshToken = handler.ReadJwtToken(refreshTokenString); var audience = refreshToken.Audiences.FirstOrDefault(); var savedRefreshToken = _refreshTokenDal.GetByAudience(audience); if (savedRefreshToken == null) { throw new RefreshTokenExpiredException("Refresh token cant find in database"); } _refreshTokenDal.Remove(savedRefreshToken); if (RefreshTokenHelper.IsExpired(savedRefreshToken)) { throw new RefreshTokenExpiredException("Refresh token is expired"); } var login = audience.Split("_", StringSplitOptions.RemoveEmptyEntries)[1]; var user = _profilesDal.GetByLogin(login); return(CreateResponse(_refreshTokenDal, user)); }