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.
Links