Example #1
0
        public bool Validate(JwtSecurityToken token)
        {
            var audience   = token.Audiences.FirstOrDefault();
            var savedToken = _refreshTokenDAL.GetByAudience(audience);

            return(token == null ? false : savedToken.Expire > DateTime.UtcNow);
        }
Example #2
0
        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));
        }