public AzureResourceSasGenerator With(SharedAccessAccountPermissions permissions)
 {
     if (permissions == default)
     {
         throw new Exception();
     }
     Permissions = permissions;
     return(this);
 }
예제 #2
0
        /// <summary>
        /// Set up access policy permission
        /// </summary>
        /// <param name="policy">SharedAccessBlobPolicy object</param>
        /// <param name="permission">Permisson</param>
        internal SharedAccessAccountPermissions SetupAccessPolicyPermission(string permission)
        {
            if (string.IsNullOrEmpty(permission))
            {
                return(SharedAccessAccountPermissions.None);
            }

            SharedAccessAccountPermissions accountPermission = SharedAccessAccountPermissions.None;

            permission = permission.ToLower();
            foreach (char op in permission)
            {
                switch (op)
                {
                case StorageNouns.Permission.Read:
                case StorageNouns.Permission.Query:
                    accountPermission |= SharedAccessAccountPermissions.Read;
                    break;

                case StorageNouns.Permission.Process:
                    accountPermission |= SharedAccessAccountPermissions.ProcessMessages;
                    break;

                case StorageNouns.Permission.Write:
                    accountPermission |= SharedAccessAccountPermissions.Write;
                    break;

                case StorageNouns.Permission.Add:
                    accountPermission |= SharedAccessAccountPermissions.Add;
                    break;

                case StorageNouns.Permission.Create:
                    accountPermission |= SharedAccessAccountPermissions.Create;
                    break;

                case StorageNouns.Permission.Update:
                    accountPermission |= SharedAccessAccountPermissions.Update;
                    break;

                case StorageNouns.Permission.Delete:
                    accountPermission |= SharedAccessAccountPermissions.Delete;
                    break;

                case StorageNouns.Permission.List:
                    accountPermission |= SharedAccessAccountPermissions.List;
                    break;

                default:
                    throw new ArgumentException(string.Format(Resources.InvalidAccessPermission, op));
                }
            }

            return(accountPermission);
        }
예제 #3
0
        string GetSas(SharedAccessAccountPermissions permissions)
        {
            var policy = new SharedAccessAccountPolicy
            {
                Permissions            = permissions,
                Services               = SharedAccessAccountServices.Blob,
                ResourceTypes          = SharedAccessAccountResourceTypes.Container | SharedAccessAccountResourceTypes.Object,
                SharedAccessExpiryTime = DateTimeOffset.Now.AddDays(1),
                Protocols              = SharedAccessProtocol.HttpsOrHttp,
            };

            var sasToken = _storageAccount.GetSharedAccessSignature(policy);

            return(_container.Uri + sasToken);
        }
예제 #4
0
 public void AccountSASPermissions()
 {
     // Single-threaded, takes 10 minutes to run
     // Parallelized, 1 minute.
     for (int i = 0; i < 0x100; i++)
     {
         Task[] tasks = new Task[3]; //each permission (0x100) times four services.
         SharedAccessAccountPermissions permissions = (SharedAccessAccountPermissions)i;
         SharedAccessAccountPolicy      policy      = GetPolicyWithFullPermissions();
         policy.Permissions = permissions;
         tasks[0]           = this.RunPermissionsTestBlobs(policy);
         tasks[2]           = this.RunPermissionsTestQueues(policy);
         tasks[3]           = this.RunPermissionsTestFiles(policy);
         Task.WaitAll(tasks);
     }
 }
        /// <summary>
        /// Converts the permissions specified for the shared access policy to a string.
        /// </summary>
        /// <param name="permissions">A <see cref="SharedAccessAccountPermissions"/> object.</param>
        /// <returns>The shared access permissions in string format.</returns>
        public static string PermissionsToString(SharedAccessAccountPermissions permissions)
        {
            StringBuilder builder = new StringBuilder();

            if ((permissions & SharedAccessAccountPermissions.Read) == SharedAccessAccountPermissions.Read)
            {
                builder.Append("r");
            }

            if ((permissions & SharedAccessAccountPermissions.Add) == SharedAccessAccountPermissions.Add)
            {
                builder.Append("a");
            }

            if ((permissions & SharedAccessAccountPermissions.Create) == SharedAccessAccountPermissions.Create)
            {
                builder.Append("c");
            }

            if ((permissions & SharedAccessAccountPermissions.Update) == SharedAccessAccountPermissions.Update)
            {
                builder.Append("u");
            }

            if ((permissions & SharedAccessAccountPermissions.ProcessMessages) == SharedAccessAccountPermissions.ProcessMessages)
            {
                builder.Append("p");
            }

            if ((permissions & SharedAccessAccountPermissions.Write) == SharedAccessAccountPermissions.Write)
            {
                builder.Append("w");
            }

            if ((permissions & SharedAccessAccountPermissions.Delete) == SharedAccessAccountPermissions.Delete)
            {
                builder.Append("d");
            }

            if ((permissions & SharedAccessAccountPermissions.List) == SharedAccessAccountPermissions.List)
            {
                builder.Append("l");
            }

            return(builder.ToString());
        }
        /// <summary>
        /// Converts the permissions specified for the shared access policy to a string.
        /// </summary>
        /// <param name="permissions">A <see cref="SharedAccessAccountPermissions"/> object.</param>
        /// <returns>The shared access permissions in string format.</returns>
        public static string PermissionsToString(SharedAccessAccountPermissions permissions)
        {
            StringBuilder builder = new StringBuilder();

            if ((permissions & SharedAccessAccountPermissions.Read) == SharedAccessAccountPermissions.Read)
            {
                builder.Append("r");
            }

            if ((permissions & SharedAccessAccountPermissions.Add) == SharedAccessAccountPermissions.Add)
            {
                builder.Append("a");
            }

            if ((permissions & SharedAccessAccountPermissions.Create) == SharedAccessAccountPermissions.Create)
            {
                builder.Append("c");
            }

            if ((permissions & SharedAccessAccountPermissions.Update) == SharedAccessAccountPermissions.Update)
            {
                builder.Append("u");
            }

            if ((permissions & SharedAccessAccountPermissions.ProcessMessages) == SharedAccessAccountPermissions.ProcessMessages)
            {
                builder.Append("p");
            }

            if ((permissions & SharedAccessAccountPermissions.Write) == SharedAccessAccountPermissions.Write)
            {
                builder.Append("w");
            }

            if ((permissions & SharedAccessAccountPermissions.Delete) == SharedAccessAccountPermissions.Delete)
            {
                builder.Append("d");
            }

            if ((permissions & SharedAccessAccountPermissions.List) == SharedAccessAccountPermissions.List)
            {
                builder.Append("l");
            }

            return builder.ToString();
        }
예제 #7
0
 public static string PermissionsToString(SharedAccessAccountPermissions permissions)
 {
     throw new System.NotImplementedException();
 }