Я пытаюсь выяснить, как сгенерировать токен для пользователей для доступа к данным, которые хранятся в контейнере BLOB-объектов учетной записи хранения Azure. Пользователи загружают различные данные (PDF-файлы, изображения), но я не хочу, чтобы ссылки на эти данные были общедоступными. Рекомендованной стратегией было использование токена SAS, который мне удалось заставить работать под .Net с помощью следующей функции, которую я нашел на сайте MS около года назад:
//Function for getting a temporary Azure SAS
public static string GetAzureSASToken(string userhashid, int minutes)
{
//Get Azure SAS Token so we can allow them to temporarily view the photos
UploadedFileInfo uploadedfileinfo = new UploadedFileInfo();
//Azure User containter must be all lowercase!!
uploadedfileinfo.usercontainer = "user-" + userhashid;
uploadedfileinfo.azureurl = ConfigurationManager.AppSettings["AzureURL"].ToString() + uploadedfileinfo.usercontainer + "/";
// Retrieve storage account from connection string.
string azureconnection = CloudConfigurationManager.GetSetting("StorageConnectionString");
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(azureconnection);
CloudBlobClient client = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = client.GetContainerReference(uploadedfileinfo.usercontainer);
//Set the expiry time and permissions for the container.
//In this case no start time is specified, so the shared access signature becomes valid immediately.
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy();
sasConstraints.SharedAccessExpiryTime = DateTimeOffset.UtcNow.AddMinutes(minutes);
sasConstraints.Permissions = SharedAccessBlobPermissions.Read;
//Generate the shared access signature on the container, setting the constraints directly on the signature.
string sasContainerToken = blobContainer.GetSharedAccessSignature(sasConstraints);
return sasContainerToken;
}
Проблема в том, что ятеперь нужно получить доступ к этим файлам из приложения Asp.Net Core 2.2 , и я не могу понять, как реплицировать код для получения токена (библиотеки Core разные)
Любые предложения о том, как сделать это в .Net Core 2.2?
Спасибо!