public static void GetUriAndPermission(string fileName, out string fileUri, out string signUriPara, out DateTime expireDateTime, int keepSeconds, string projectName, string blobPath = "source/images") { Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory cloudBlobDirectory = CloudBlobContainer.GetDirectoryReference(projectName + "/" + blobPath); projectName = projectName.ToUpper(); var res = CloudBlobContainer.GetPermissionsAsync().Result; if (keepSeconds > 0) { expireDateTime = DateTime.UtcNow.AddSeconds(keepSeconds); var sharedPolicy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy() { SharedAccessExpiryTime = expireDateTime, Permissions = Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Read, }; signUriPara = CloudBlobContainer.GetSharedAccessSignature(sharedPolicy, null); } else { expireDateTime = DateTime.UtcNow.Date.AddDays(1).AddSeconds(-1); var sharedPolicy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy() { SharedAccessExpiryTime = expireDateTime, Permissions = Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Read, }; signUriPara = CloudBlobContainer.GetSharedAccessSignature(sharedPolicy, null); } fileUri = cloudBlobDirectory.GetBlockBlobReference(fileName).Uri.ToString(); }
public Uri GetSas(Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions permission, TimeSpan expiry, string containerName) { var policy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy { Permissions = permission, SharedAccessExpiryTime = DateTime.UtcNow.Add(expiry) }; var container = this.Parent.GetContainer(containerName); var signature = container.GetSharedAccessSignature(policy); return new Uri(System.IO.Path.Combine(container.Uri.ToString(), signature)); }
public Uri GetSas(Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions permission, TimeSpan expiry, string containerName) { var policy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy { Permissions = permission, SharedAccessExpiryTime = DateTime.UtcNow.Add(expiry) }; var container = this.Parent.GetContainer(containerName); var signature = container.GetSharedAccessSignature(policy); return(new Uri(System.IO.Path.Combine(container.Uri.ToString(), signature))); }
// source: http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-shared-access-signature-part-2/ private string GetURL(int expirySeconds, Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions permissions) { var sasConstraints = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy(); sasConstraints.SharedAccessStartTime = DateTimeOffset.Now.AddMinutes(-1); sasConstraints.SharedAccessExpiryTime = DateTimeOffset.Now.AddSeconds(expirySeconds); sasConstraints.Permissions = permissions; var sasToken = _delegateContent.GetSharedAccessSignature(sasConstraints); return(_delegateContent.Uri + sasToken); }
} // Run private static string GetSASToken(string containerName, string customerWhitelistIPAddressMinimum, string customerWhitelistIPAddressMaximum, int tokenExpireTimeInMinutes, string cloudAccountName, string cloudKey) { Microsoft.WindowsAzure.Storage.Auth.StorageCredentials storageCredentials = new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(cloudAccountName, cloudKey); Microsoft.WindowsAzure.Storage.CloudStorageAccount storageAccount = null; if (cloudAccountName == "devstoreaccount1") { storageAccount = new Microsoft.WindowsAzure.Storage.CloudStorageAccount(storageCredentials, new Uri("http://127.0.0.1:10000/devstoreaccount1"), new Uri("http://127.0.0.1:10001/devstoreaccount1"), new Uri("http://127.0.0.1:10002/devstoreaccount1"), new Uri("http://127.0.0.1:10003/devstoreaccount1")); } else { storageAccount = new Microsoft.WindowsAzure.Storage.CloudStorageAccount(storageCredentials, true); } Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient blobStorage = storageAccount.CreateCloudBlobClient(); blobStorage.DefaultRequestOptions.RetryPolicy = new Microsoft.WindowsAzure.Storage.RetryPolicies.LinearRetry(TimeSpan.FromSeconds(1), 10); Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer container = blobStorage.GetContainerReference(containerName); container.CreateIfNotExistsAsync().Wait(); Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy policy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy(); policy.Permissions = Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Write | Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.List; policy.SharedAccessStartTime = DateTimeOffset.UtcNow.AddMinutes(-5); // always do in the past to prevent errors policy.SharedAccessExpiryTime = DateTimeOffset.UtcNow.AddMinutes(tokenExpireTimeInMinutes); string sasToken = null; if (string.IsNullOrWhiteSpace(customerWhitelistIPAddressMinimum) || string.IsNullOrWhiteSpace(customerWhitelistIPAddressMaximum) || cloudAccountName == "devstoreaccount1") { sasToken = container.GetSharedAccessSignature(policy); } else { Microsoft.WindowsAzure.Storage.IPAddressOrRange iPAddressOrRange = new Microsoft.WindowsAzure.Storage.IPAddressOrRange(customerWhitelistIPAddressMinimum, customerWhitelistIPAddressMaximum); sasToken = container.GetSharedAccessSignature(policy, null, Microsoft.WindowsAzure.Storage.SharedAccessProtocol.HttpsOnly, iPAddressOrRange); } // string url = "https://" + cloudAccountName + ".blob.core.windows.net" + sasToken; return(sasToken); }
public static string GetImageInfo(string projectName, string id) { var cloudBlobDirectory = CloudBlobContainer.GetDirectoryReference(projectName + "/source/info"); projectName = projectName.ToUpper(); var res = CloudBlobContainer.GetPermissionsAsync().Result; var sharedPolicy = new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy() { SharedAccessExpiryTime = new DateTime(2099, 12, 31), Permissions = Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Read, }; var signUriPara = CloudBlobContainer.GetSharedAccessSignature(sharedPolicy, null); var fileUri = cloudBlobDirectory.GetBlockBlobReference(id + ".json").Uri.ToString(); return(fileUri + signUriPara); }