コード例 #1
0
        /// <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,
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        /// <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,
コード例 #5
0
        /// <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,
コード例 #6
0
        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));
        }