Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Azure Storage: 403 Server failed to authenticate the request

I've search here and in Google but I can't find a solution.

With my C# code I want to read a file from Azure Storage Blob. The code (only 6 line) works very well in another project (Windows 8.1 Universal App) but not in my new Windows 10 UWP App.

This is my code:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(azureConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("container-name");

CloudBlob b1 = container.GetBlobReference("27.76914.json");
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync("stefano1.json", CreationCollisionOption.ReplaceExisting);
await b1.DownloadToFileAsync(file);

The Exception:

Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.

Using Fiddler4 I found this error on message 403:

The MAC signature found in the HTTP request 'R2t9hKsyXf470HF2LNP8T+M2nci0ddE/ojQ0r4UVjJQ=' is not the same as any computed signature

My attempts:

  1. The application works the first time (file downloaded). The second time I get the Exception.
  2. If I change the requested file name: the application works the first time (file downloaded). The second time I get the Exception.
  3. The next day I get immediately the same exception (at first run)
  4. Also if I delete bin and obj folders I get the error
  5. If I create another application and try to download the same file (same as point 1), it works the first time, but not the second.
  6. In a Console Application all works well.

This is the Fiddler4 Raw Request (where ***** is my Azure Storage Account Name):

GET https://*****.blob.core.windows.net/container-name/27.76914.json HTTP/1.1
x-ms-client-request-id: accee7e7-646d-417a-b734-1591cbc16a8d
x-ms-date: Thu, 03 Sep 2015 06:31:37 GMT
x-ms-version: 2015-02-21
User-Agent: WA-Storage/5.0.2 (Windows Runtime)
Authorization: SharedKey *****:R2t9hKsyXf470HF2LNP8T+M2nci0ddE/ojQ0r4UVjJQ=
Host: *****.blob.core.windows.net
If-Modified-Since: Sun, 30 Aug 2015 18:52:41 GMT
If-None-Match: "0x8D2B16C2ED82C4A"
Connection: Keep-Alive

Thank you!

like image 275
Stefano Avatar asked Sep 02 '15 22:09

Stefano


People also ask

How do I authenticate my Azure storage account?

To authenticate a security principal from your Azure Storage application, first configure Azure role-based access control (Azure RBAC) settings for that security principal. Azure Storage defines built-in roles that encompass permissions for containers and queues.

How do I connect to Azure storage using PowerShell?

To sign in to your Azure account with an Azure AD account, open PowerShell and call the Connect-AzAccount cmdlet. After the connection has been established, create the storage account context by calling the New-AzStorageContext cmdlet.

What is BlobServiceClient?

The BlobServiceClient allows you to manipulate Azure Storage service resources and blob containers. The storage account provides the top-level namespace for the Blob service.


1 Answers

This was also reported on our GitHub page here: https://github.com/Azure/azure-storage-net/issues/171

Our leading theory is that a caching proxy might be in between the client and the server affecting your requests.

We're still investigating and will let you know.

like image 111
Peter Marino - MSFT Avatar answered Sep 29 '22 11:09

Peter Marino - MSFT