Пример #1
0
        public static SasResourceType ParseSasResourceType(string signedResourceType)
        {
            if (string.IsNullOrWhiteSpace(signedResourceType))
            {
                throw new ArgumentException("signedResourceType");
            }
            SasResourceType sasResourceType = SasResourceType.None;

            for (int i = 0; i < signedResourceType.Length; i++)
            {
                char chr = signedResourceType[i];
                if (chr == 'c')
                {
                    sasResourceType = AccountSasHelper.ValidateAndAddResourceType(sasResourceType, SasResourceType.Container, i);
                }
                else if (chr == 'o')
                {
                    sasResourceType = AccountSasHelper.ValidateAndAddResourceType(sasResourceType, SasResourceType.Object, i);
                }
                else
                {
                    if (chr != 's')
                    {
                        throw new FormatException(string.Concat("Unexpected character ", signedResourceType[i], " in signed resource type"));
                    }
                    sasResourceType = AccountSasHelper.ValidateAndAddResourceType(sasResourceType, SasResourceType.Service, i);
                }
            }
            return(sasResourceType);
        }
Пример #2
0
 private static SasResourceType ValidateAndAddResourceType(SasResourceType currResourceTypes, SasResourceType newResourceType, int position)
 {
     if ((currResourceTypes & newResourceType) == newResourceType)
     {
         object[] objArray = new object[] { "Invalid duplicate service. Error at index ", position, " of ", currResourceTypes };
         throw new FormatException(string.Concat(objArray));
     }
     currResourceTypes |= newResourceType;
     return(currResourceTypes);
 }
Пример #3
0
        public SASAuthorizationParameters CheckAccessWithMultiplePermissions(IAccountIdentifier requestor, string resourceAccount, string resourceContainer, string resourceIdentifier, PermissionLevel requiredPermission, SasType supportedSasTypes, SasResourceType requiredResourceType, List <SASPermission> requiredSasPermissions, TimeSpan timeout)
        {
            SASAuthorizationParameters sASAuthorizationParameter;
            AuthorizationResult        authorizationResult = null;
            Duration startingNow = Duration.StartingNow;
            SASAuthorizationParameters sASAuthorizationParameter1 = new SASAuthorizationParameters()
            {
                SupportedSasTypes  = supportedSasTypes,
                SignedResourceType = requiredResourceType
            };
            SASAuthorizationParameters current = sASAuthorizationParameter1;

            List <SASPermission> .Enumerator enumerator = requiredSasPermissions.GetEnumerator();
            try
            {
                do
                {
                    if (!enumerator.MoveNext())
                    {
                        break;
                    }
                    current.SignedPermission = enumerator.Current;
                    IAsyncResult asyncResult = this.BeginAuthorizeRequest(requestor, resourceAccount, resourceContainer, resourceIdentifier, requiredPermission, current, startingNow.Remaining(timeout), null, null);
                    authorizationResult = this.EndAuthorizeRequest(asyncResult);
                    if (!authorizationResult.Authorized)
                    {
                        continue;
                    }
                    sASAuthorizationParameter = current;
                    return(sASAuthorizationParameter);
                }while (authorizationResult.Authorized || authorizationResult.FailureReason == AuthorizationFailureReason.PermissionMismatch);
                if (requestor == null || !requestor.IsSecondaryAccess || !AuthorizationManager.IsWritePermission(requiredPermission))
                {
                    throw new NephosUnauthorizedAccessException(resourceAccount, resourceContainer, resourceIdentifier, requestor, requiredPermission, authorizationResult.FailureReason);
                }
                throw new SecondaryWriteNotAllowedException();
            }
            finally
            {
                ((IDisposable)enumerator).Dispose();
            }
            return(sASAuthorizationParameter);
        }