private FileSasBuilder BuildFileSasBuilder(bool includeVersion, bool includeFilePath, TestConstants constants, string shareName, string filePath)
        {
            var fileSasBuilder = new FileSasBuilder
            {
                Version            = null,
                Protocol           = constants.Sas.Protocol,
                StartsOn           = constants.Sas.StartTime,
                ExpiresOn          = constants.Sas.ExpiryTime,
                IPRange            = constants.Sas.IPRange,
                Identifier         = constants.Sas.Identifier,
                ShareName          = shareName,
                FilePath           = "",
                CacheControl       = constants.Sas.CacheControl,
                ContentDisposition = constants.Sas.ContentDisposition,
                ContentEncoding    = constants.Sas.ContentEncoding,
                ContentLanguage    = constants.Sas.ContentLanguage,
                ContentType        = constants.Sas.ContentType
            };

            fileSasBuilder.SetPermissions(FileSasPermissions.All);

            if (includeVersion)
            {
                fileSasBuilder.Version = constants.Sas.Version;
            }

            if (includeFilePath)
            {
                fileSasBuilder.FilePath = filePath;
            }

            return(fileSasBuilder);
        }
        public void FileSasBuilder_ToSasQueryParameters_NoVersionTest()
        {
            // Arrange
            var            constants      = new TestConstants(this);
            var            shareName      = GetNewShareName();
            var            filePath       = GetNewDirectoryName();
            FileSasBuilder fileSasBuilder = BuildFileSasBuilder(includeVersion: false, includeFilePath: false, constants, shareName, filePath);
            var            signature      = BuildSignature(includeFilePath: false, includeVersion: false, constants, shareName, filePath);

            // Act
            var sasQueryParameters = fileSasBuilder.ToSasQueryParameters(constants.Sas.SharedKeyCredential);

            // Assert
            Assert.AreEqual(SasQueryParameters.DefaultSasVersion, sasQueryParameters.Version);
            Assert.IsNull(sasQueryParameters.Services);
            Assert.IsNull(sasQueryParameters.ResourceTypes);
            Assert.AreEqual(constants.Sas.Protocol, sasQueryParameters.Protocol);
            Assert.AreEqual(constants.Sas.StartTime, sasQueryParameters.StartsOn);
            Assert.AreEqual(constants.Sas.ExpiryTime, sasQueryParameters.ExpiresOn);
            Assert.AreEqual(constants.Sas.IPRange, sasQueryParameters.IPRange);
            Assert.AreEqual(constants.Sas.Identifier, sasQueryParameters.Identifier);
            Assert.AreEqual(Constants.Sas.Resource.Share, sasQueryParameters.Resource);
            Assert.AreEqual(Permissions, sasQueryParameters.Permissions);
            Assert.AreEqual(signature, sasQueryParameters.Signature);
            AssertResponseHeaders(constants, sasQueryParameters);
        }
Пример #3
0
        private FileSasBuilder BuildFileSasBuilder(bool includeVersion, bool includeFilePath)
        {
            var fileSasBuilder = new FileSasBuilder
            {
                Version            = null,
                Protocol           = TestConstants.Sas.Protocol,
                StartTime          = TestConstants.Sas.StartTime,
                ExpiryTime         = TestConstants.Sas.ExpiryTime,
                Permissions        = Permissions,
                IPRange            = TestConstants.Sas.IPRange,
                Identifier         = TestConstants.Sas.Identifier,
                ShareName          = ShareName,
                FilePath           = "",
                CacheControl       = TestConstants.Sas.CacheControl,
                ContentDisposition = TestConstants.Sas.ContentDisposition,
                ContentEncoding    = TestConstants.Sas.ContentEncoding,
                ContentLanguage    = TestConstants.Sas.ContentLanguage,
                ContentType        = TestConstants.Sas.ContentType
            };

            if (includeVersion)
            {
                fileSasBuilder.Version = TestConstants.Sas.Version;
            }

            if (includeFilePath)
            {
                fileSasBuilder.FilePath = FilePath;
            }

            return(fileSasBuilder);
        }
        public void FileSasBuilder_NullSharedKeyCredentialTest()
        {
            // Arrange
            var            constants      = new TestConstants(this);
            var            shareName      = GetNewShareName();
            var            filePath       = GetNewDirectoryName();
            FileSasBuilder fileSasBuilder = BuildFileSasBuilder(includeVersion: true, includeFilePath: true, constants, shareName, filePath);

            // Act
            Assert.Throws <ArgumentNullException>(() => fileSasBuilder.ToSasQueryParameters(null), "sharedKeyCredential");
        }
Пример #5
0
        public SasQueryParameters GetNewFileServiceSasCredentialsShare(string shareName, StorageSharedKeyCredential sharedKeyCredentials = default)
        {
            var builder = new FileSasBuilder
            {
                ShareName = shareName,
                Protocol  = SasProtocol.None,
                StartsOn  = Recording.UtcNow.AddHours(-1),
                ExpiresOn = Recording.UtcNow.AddHours(+1),
                IPRange   = new SasIPRange(IPAddress.None, IPAddress.None)
            };

            builder.SetPermissions(ShareSasPermissions.All);
            return(builder.ToSasQueryParameters(sharedKeyCredentials ?? GetNewSharedKeyCredentials()));
        }
Пример #6
0
        /// <summary>
        /// File SAS Builder
        /// https://docs.microsoft.com/en-us/dotnet/api/azure.storage.sas.filesasbuilder?view=azure-dotnet-preview
        ///
        /// </summary>
        /// <returns></returns>
        public static string FileSasBuilder(string accountName, string accountKey, string shareName, string filePath = "", string PolicyName = "")
        {
            // TODO - ExpiryTime must be omitted if Identifier is specified.
            // TODO - Header fields
            // Create a SAS token that's valid a short interval.
            FileSasBuilder fileSasBuilder;

            try
            {
                fileSasBuilder = new FileSasBuilder()
                {
                    // CacheControl
                    // ContentDisposition
                    // ContentEncoding
                    // ContentLanguage
                    // ContentType
                    // FilePath =                 // string - The path of the file or directory being made accessible, or Empty for a share SAS.
                    ShareName = shareName,        // string - The name of the share being made accessible.
                    // Identifier =               // string - access policy specified for the container
                    // IPRange =
                    //Permissions = "cdrw",       // string - Create, Delete, Read, Write (File SAS)
                    //Permissions = "cdrw",       // string - Create, Delete, List, Read, Write (Share SAS)
                    Permissions = SAS_Utils.SAS.sp.v,        // Permissions validated on ComboBox_sr_DropDownClosed()
                    // Protocol =                            // SasProtocol - Https, HttpsAndHttp, None
                    // StartTime =                                              - DateTimeOffset.UtcNow                 // OK
                    ExpiryTime = SAS_Utils.SAS.seDateTime,   // DateTimeOffset  - DateTimeOffset.UtcNow.AddMinutes(60)  // OK
                    Version    = SAS_Utils.SAS.sv.v          // String - sv
                };

                // Adding the optional fields commented out above
                //-----------------------------------------------------------
                if (filePath != "")
                {
                    fileSasBuilder.FilePath = filePath;
                }

                // ExpiryTime must be omitted if it has been specified in an associated stored access policy.
                if (PolicyName != "")
                {
                    fileSasBuilder.Identifier = PolicyName;
                }

                if (!String.IsNullOrEmpty(SAS_Utils.SAS.st.v))
                {
                    fileSasBuilder.StartTime = SAS_Utils.SAS.stDateTime;
                }

                if (!String.IsNullOrEmpty(SAS_Utils.SAS.spr.v))
                {
                    fileSasBuilder.Protocol = Get_SasProtocol(SAS_Utils.SAS.spr.v);     // SasProtocol - Https, HttpsAndHttp, None
                }
                if (!String.IsNullOrEmpty(SAS_Utils.SAS.sip.v))
                {
                    fileSasBuilder.IPRange = new IPRange(new System.Net.IPAddress(SAS_Utils.fromIP), (SAS_Utils.toIP[0] == 0 ? null : new System.Net.IPAddress(SAS_Utils.toIP))); // IPRange - StartIP, optional EndIP
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error on creating " + (filePath == ""?"Share":"File") + " Service SAS\n\n" + ex.ToString(), "Invalid SAS parameters", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return("");
            }
            //-----------------------------------------------------------



            StorageSharedKeyCredential Credential = new StorageSharedKeyCredential(accountName, accountKey);

            // Use the key to get the SAS token.
            string sasToken = fileSasBuilder.ToSasQueryParameters(Credential).ToString();

            return(sasToken);
        }