コード例 #1
0
 /// <summary>
 /// Canonicalizes the HTTP request.
 /// </summary>
 /// <param name="request">A web request.</param>
 /// <param name="accountName">The name of the storage account.</param>
 /// <returns>The canonicalized string for the request.</returns>
 public override string CanonicalizeHttpRequest(HttpWebRequest request, string accountName)
 {
     return(CanonicalizationStrategy.CanonicalizeHttpRequest(
                request.Address,
                accountName,
                request.Method,
                request.ContentType,
                string.Empty,
                request.Headers));
 }
コード例 #2
0
        /// <summary>
        /// Signs the request appropriately to make it an authenticated request for Blob and Queue.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="credentials">The credentials.</param>
        internal static void SignRequestForBlobAndQueue(HttpWebRequest request, Credentials credentials)
        {
            // Add the date header to the request
            string dateString = ConvertDateTimeToHttpString(DateTime.UtcNow);

            request.Headers.Add("x-ms-date", dateString);

            // Compute the signature and add the authentication scheme
            CanonicalizationStrategy canonicalizer = CanonicalizationStrategyFactory.GetBlobQueueFullCanonicalizationStrategy(request);

            string message = canonicalizer.CanonicalizeHttpRequest(request, credentials.AccountName);
            string computedBase64Signature = StorageKey.ComputeMacSha256(credentials.Key, message);

            request.Headers.Add(
                "Authorization",
                string.Format(CultureInfo.InvariantCulture, "{0} {1}:{2}", "SharedKey", credentials.SigningAccountName, computedBase64Signature));
        }