/// <summary> /// Use an account's <see cref="StorageSharedKeyCredential"/> to sign this /// shared access signature values to produce the proper SAS query /// parameters for authenticating requests. /// </summary> /// <param name="sharedKeyCredential"> /// The storage account's <see cref="StorageSharedKeyCredential"/>. /// </param> /// <returns> /// The <see cref="DataLakeSasQueryParameters"/> used for authenticating /// requests. /// </returns> public DataLakeSasQueryParameters ToSasQueryParameters(StorageSharedKeyCredential sharedKeyCredential) { sharedKeyCredential = sharedKeyCredential ?? throw Errors.ArgumentNull(nameof(sharedKeyCredential)); EnsureState(); var startTime = SasExtensions.FormatTimesForSasSigning(StartsOn); var expiryTime = SasExtensions.FormatTimesForSasSigning(ExpiresOn); // See http://msdn.microsoft.com/en-us/library/azure/dn140255.aspx var stringToSign = String.Join("\n", Permissions, startTime, expiryTime, GetCanonicalName(sharedKeyCredential.AccountName, FileSystemName ?? String.Empty, Path ?? String.Empty), Identifier, IPRange.ToString(), SasExtensions.ToProtocolString(Protocol), Version, Resource, null, // snapshot CacheControl, ContentDisposition, ContentEncoding, ContentLanguage, ContentType); var signature = StorageSharedKeyCredentialInternals.ComputeSasSignature(sharedKeyCredential, stringToSign); var p = new DataLakeSasQueryParameters( version: Version, services: default,
private string BuildSignature(bool includeBlob, bool includeSnapshot, string containerName, string blobName, TestConstants constants) { var canonicalName = includeBlob ? $"/blob/{constants.Sas.Account}/{containerName}/{blobName}" : $"/blob/{constants.Sas.Account}/{containerName}"; var resource = Constants.Sas.Resource.Container; if (includeBlob && includeSnapshot) { resource = Constants.Sas.Resource.BlobSnapshot; } else if (includeBlob) { resource = Constants.Sas.Resource.Blob; } var stringToSign = String.Join("\n", Permissions, SasExtensions.FormatTimesForSasSigning(constants.Sas.StartTime), SasExtensions.FormatTimesForSasSigning(constants.Sas.ExpiryTime), canonicalName, constants.Sas.Identifier, constants.Sas.IPRange.ToString(), SasExtensions.ToProtocolString(constants.Sas.Protocol), SasQueryParameters.DefaultSasVersion, resource, includeSnapshot ? Snapshot : null, constants.Sas.CacheControl, constants.Sas.ContentDisposition, constants.Sas.ContentEncoding, constants.Sas.ContentLanguage, constants.Sas.ContentType); return(StorageSharedKeyCredentialInternals.ComputeSasSignature(constants.Sas.SharedKeyCredential, stringToSign)); }
private string BuildSignature(bool includeFilePath, bool includeVersion, TestConstants constants, string shareName, string filePath) { var canonicalName = "/file/" + constants.Sas.Account + "/" + shareName; if (includeFilePath) { canonicalName += "/" + filePath; } var stringToSign = string.Join("\n", Permissions, SasExtensions.FormatTimesForSasSigning(constants.Sas.StartTime), SasExtensions.FormatTimesForSasSigning(constants.Sas.ExpiryTime), canonicalName, constants.Sas.Identifier, constants.Sas.IPRange.ToString(), SasExtensions.ToProtocolString(constants.Sas.Protocol), includeVersion ? constants.Sas.Version : SasQueryParameters.DefaultSasVersion, constants.Sas.CacheControl, constants.Sas.ContentDisposition, constants.Sas.ContentEncoding, constants.Sas.ContentLanguage, constants.Sas.ContentType); return(StorageSharedKeyCredentialInternals.ComputeSasSignature(constants.Sas.SharedKeyCredential, stringToSign)); }
/// <summary> /// Use an account's <see cref="StorageSharedKeyCredential"/> to sign this /// shared access signature values to produce the proper SAS query /// parameters for authenticating requests. /// </summary> /// <param name="sharedKeyCredential"> /// The storage account's <see cref="StorageSharedKeyCredential"/>. /// </param> /// <returns> /// The <see cref="SasQueryParameters"/> used for authenticating /// requests. /// </returns> public SasQueryParameters ToSasQueryParameters(StorageSharedKeyCredential sharedKeyCredential) { sharedKeyCredential = sharedKeyCredential ?? throw Errors.ArgumentNull(nameof(sharedKeyCredential)); if (ExpiresOn == default) { throw Errors.SasMissingData(nameof(ExpiresOn)); } if (string.IsNullOrEmpty(Permissions)) { throw Errors.SasMissingData(nameof(Permissions)); } if (string.IsNullOrEmpty(Version)) { Version = SasQueryParameters.DefaultSasVersion; } var startTime = SasExtensions.FormatTimesForSasSigning(StartsOn); var expiryTime = SasExtensions.FormatTimesForSasSigning(ExpiresOn); // String to sign: http://msdn.microsoft.com/en-us/library/azure/dn140255.aspx var stringToSign = string.Join("\n", Permissions, startTime, expiryTime, GetCanonicalName(sharedKeyCredential.AccountName, QueueName ?? string.Empty), Identifier, IPRange.ToString(), SasExtensions.ToProtocolString(Protocol), Version); var signature = StorageSharedKeyCredentialInternals.ComputeSasSignature(sharedKeyCredential, stringToSign); var p = SasQueryParametersInternals.Create( version: Version, services: default,
/// <summary> /// Use an account's <see cref="StorageSharedKeyCredential"/> to sign this /// shared access signature values to produce the proper SAS query /// parameters for authenticating requests. /// </summary> /// <param name="sharedKeyCredential"> /// The storage account's <see cref="StorageSharedKeyCredential"/>. /// </param> /// <returns> /// The <see cref="DataLakeSasQueryParameters"/> used for authenticating /// requests. /// </returns> public DataLakeSasQueryParameters ToSasQueryParameters(StorageSharedKeyCredential sharedKeyCredential) { sharedKeyCredential = sharedKeyCredential ?? throw Errors.ArgumentNull(nameof(sharedKeyCredential)); EnsureState(); string startTime = SasExtensions.FormatTimesForSasSigning(StartsOn); string expiryTime = SasExtensions.FormatTimesForSasSigning(ExpiresOn); // See http://msdn.microsoft.com/en-us/library/azure/dn140255.aspx string stringToSign; // TODO https://github.com/Azure/azure-sdk-for-net/issues/23369 if (SasQueryParametersInternals.DefaultSasVersionInternal == "2020-12-06") { stringToSign = string.Join("\n", Permissions, startTime, expiryTime, GetCanonicalName(sharedKeyCredential.AccountName, FileSystemName ?? string.Empty, Path ?? string.Empty), Identifier, IPRange.ToString(), SasExtensions.ToProtocolString(Protocol), Version, Resource, null, // snapshot null, // encryption scope CacheControl, ContentDisposition, ContentEncoding, ContentLanguage, ContentType); } else { stringToSign = string.Join("\n", Permissions, startTime, expiryTime, GetCanonicalName(sharedKeyCredential.AccountName, FileSystemName ?? string.Empty, Path ?? string.Empty), Identifier, IPRange.ToString(), SasExtensions.ToProtocolString(Protocol), Version, Resource, null, // snapshot CacheControl, ContentDisposition, ContentEncoding, ContentLanguage, ContentType); } string signature = StorageSharedKeyCredentialInternals.ComputeSasSignature(sharedKeyCredential, stringToSign); DataLakeSasQueryParameters p = new DataLakeSasQueryParameters( version: Version, services: default,
private string BuildSignature(TestConstants constants, string queueName, bool includeVersion) { var stringToSign = string.Join("\n", Permissions, SasExtensions.FormatTimesForSasSigning(constants.Sas.StartTime), SasExtensions.FormatTimesForSasSigning(constants.Sas.ExpiryTime), "/queue/" + constants.Sas.Account + "/" + queueName, constants.Sas.Identifier, constants.Sas.IPRange.ToString(), SasExtensions.ToProtocolString(SasProtocol.Https), includeVersion ? constants.Sas.Version : SasQueryParameters.DefaultSasVersion); return(StorageSharedKeyCredentialInternals.ComputeSasSignature(constants.Sas.SharedKeyCredential, stringToSign)); }