Example #1
0
		public bool QuotaCheckAndUpdate(UserContext userContext, UserQuota quota)
		{
			bool flag;
			lock (this.syncObject)
			{
				if (this.CheckConcurrentRequestQuota(quota.MaxConcurrentRequests))
				{
					if (this.CheckRequestPerTimeSlotQuota(quota.MaxRequestsPerTimeSlot, quota.TimeSlotSize))
					{
						Usage usage = this;
						usage.concurrentRequests = usage.concurrentRequests + 1;
						this.requests.Increment(quota.TimeSlotSize);
						TraceHelper.Current.UserQuotaSucceeded(userContext.Name);
						TraceHelper.Current.DebugMessage(string.Concat("Usage.QuotaCheckAndUpdate called. Concurrent requests = ", this.concurrentRequests));
						flag = true;
					}
					else
					{
						DataServiceController.Current.QuotaSystem.UserQuotaViolation.Increment();
						TraceHelper.Current.UserQuotaViolation(userContext.Name, "MaxRequestPerTimeSlot quota violation");
						DataServiceController.Current.PerfCounters.UserQuotaViolationsPerSec.Increment();
						flag = false;
					}
				}
				else
				{
					DataServiceController.Current.QuotaSystem.UserQuotaViolation.Increment();
					TraceHelper.Current.UserQuotaViolation(userContext.Name, "MaxConcurrentRequest quota violation");
					DataServiceController.Current.PerfCounters.UserQuotaViolationsPerSec.Increment();
					flag = false;
				}
			}
			return flag;
		}
Example #2
0
        /// <summary>
        /// Authorize a user. 
        /// </summary>
        /// <param name="senderInfo">Sender information</param>
        /// <param name="userQuota">User quota value</param>
        /// <returns>User context in which to execute PowerShell cmdlet</returns>
        public override WindowsIdentity AuthorizeUser(SenderInfo senderInfo, out UserQuota userQuota)
        {
            var maxConcurrentRequests = ConfigurationManager.AppSettings["MaxConcurrentRequests"];
            var maxRequestsPerTimeslot = ConfigurationManager.AppSettings["MaxRequestsPerTimeslot"];
            var timeslotSize = ConfigurationManager.AppSettings["TimeslotSize"];

            userQuota = new UserQuota(
                maxConcurrentRequests != null ? int.Parse(maxConcurrentRequests, CultureInfo.CurrentUICulture) : DefaultMaxConcurrentRequests,
                maxRequestsPerTimeslot != null ? int.Parse(maxRequestsPerTimeslot, CultureInfo.CurrentUICulture) : DefaultMaxRequestsPerTimeslot,
                timeslotSize != null ? int.Parse(timeslotSize, CultureInfo.CurrentUICulture) : DefaultTimeslotSize);

            return WindowsIdentity.GetCurrent();
        }
        /// <summary>
        /// Authorizes a user
        /// </summary>
        /// <param name="senderInfo">User information</param>
        /// <param name="quota">Returns user quota</param>
        /// <returns>WindowsIdentity, if the user is authorized else throws an exception</returns>
        public override WindowsIdentity AuthorizeUser(SenderInfo senderInfo, out UserQuota quota)
        {
            if ((senderInfo == null) || (senderInfo.Principal == null) || (senderInfo.Principal.Identity == null))
            {
                throw new ArgumentNullException("senderInfo");
            }

            if (senderInfo.Principal.Identity.IsAuthenticated == false)
            {
                throw new ArgumentException("User is not authenticated");
            }

            RbacUser.RbacUserInfo userInfo = null;
            if (senderInfo.Principal.WindowsIdentity != null)
            {
                userInfo = new RbacUser.RbacUserInfo(senderInfo.Principal.WindowsIdentity);
            }
            else
            {
                userInfo = new RbacUser.RbacUserInfo(senderInfo.Principal.Identity);
            }

            return RbacSystem.Current.AuthorizeUser(userInfo, out quota);
        }
Example #4
0
 public abstract WindowsIdentity AuthorizeUser(SenderInfo senderInfo, out UserQuota userQuota);
Example #5
0
		public abstract WindowsIdentity AuthorizeUser(SenderInfo senderInfo, out UserQuota userQuota);