SharedAccessAccountPolicy: SASToken WindowsAzure Storage

SharedAccessAccountPolicy rappresenta la possibilità per condividere in base ad una serie di criteri l’accesso ad un account tramite un Token specifico. I criteri su cui si basa questa condivisione sono i seguenti:

  • SharedAccessStartTime

  • SharedAccessExpiryTime

  • Permissions

  • Services

  • ResourceTypes

  • Protocols

  • IPAddressOrRange 

Come potete vedere le possibilità sono davvero tante. Per generare il SASToken ho scritto una classe di helper pronta all’utilizzo. *SharedAccessAccountPolicy * (cs)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

using Microsoft.WindowsAzure.Storage;
using System;

namespace DevAndreaCarrattaIT.Security
{
    public class SASToken
    {

        public string GeneateAzureStorageSASToken(string connectionString,
            SharedAccessAccountPermissions permissions,
            SharedAccessAccountServices services,
            SharedAccessAccountResourceTypes resourceTypes,
            SharedAccessProtocol protocol,
            DateTimeOffset sharedAccessStartTime,
            DateTimeOffset sharedAccessExpiryTime,
            IPAddressOrRange ipAddressOrRange = null
        )
        {

            var storageAccount = CloudStorageAccount.Parse(connectionString);

            SharedAccessAccountPolicy policy = new SharedAccessAccountPolicy()
            {
                Permissions = permissions,
                Services = services,
                ResourceTypes = resourceTypes,
                SharedAccessStartTime = sharedAccessStartTime,
                SharedAccessExpiryTime = sharedAccessExpiryTime,
                Protocols = protocol,
            };

            if (ipAddressOrRange != null)
            {
                policy.IPAddressOrRange = ipAddressOrRange;
            }

            string result = storageAccount.GetSharedAccessSignature(policy);
            return result;
        }

    }
}

Nelle ultime settimane ho pubblicato articoli su come accedere ai container per caricare (= CloudBlockBlob UploadFromStreamAsync: Upload File BlobStorage ) o scaricare (= DownloadToByteArrayAsync: Download File from BlobStorage) dei file. Con questo articolo chiudo la “mini serie” che mi ha reso possibile condividere il tutto con persone esterne.

SharedAccessAccountPolicy: come utilizzare la classe 

Utilizzare la classe appena proposta è molto semplice e basta davvero poco. GeneateAzureStorageSASToken

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

            SASToken s = new SASToken();
            string result = s.GeneateAzureStorageSASToken("...connectionString...",
                    SharedAccessAccountPermissions.Read,
                    SharedAccessAccountServices.Blob,
                    SharedAccessAccountResourceTypes.Container | SharedAccessAccountResourceTypes.Object,
                    SharedAccessProtocol.HttpsOnly,
                    DateTime.Now,
                    DateTime.Now.AddDays(1));

Prima di lanciare il tutto dovete inserire la ConnectionString (potete prenderla da “Portal Azure” entrando nel vostro Blob Storage) ed una volta ottenuta il gioco è fatto.