private static void ValidateInputRequestTime( string dateToCompare, int masterTokenExpiryInSeconds, int allowedClockSkewInSeconds) { if (string.IsNullOrEmpty(dateToCompare)) { throw new UnauthorizedException(RMResources.MissingDateForAuthorization); } if (!DateTime.TryParse(dateToCompare, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal | DateTimeStyles.AllowWhiteSpaces, out DateTime utcStartTime)) { throw new UnauthorizedException(RMResources.InvalidDateHeader); } // Check if time range is beyond DateTime.MaxValue bool outOfRange = utcStartTime >= DateTime.MaxValue.AddSeconds(-masterTokenExpiryInSeconds); if (outOfRange) { string message = string.Format(CultureInfo.InvariantCulture, RMResources.InvalidTokenTimeRange, utcStartTime.ToString("r", CultureInfo.InvariantCulture), DateTime.MaxValue.ToString("r", CultureInfo.InvariantCulture), DateTime.UtcNow.ToString("r", CultureInfo.InvariantCulture)); DefaultTrace.TraceError(message); throw new ForbiddenException(message); } DateTime utcEndTime = utcStartTime + TimeSpan.FromSeconds(masterTokenExpiryInSeconds); AuthorizationHelper.CheckTimeRangeIsCurrent(allowedClockSkewInSeconds, utcStartTime, utcEndTime); }