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); }
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"); }
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())); }
/// <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); }