Я создаю токен SAS (подпись общего доступа) для своих контейнеров BLOB-объектов Azure с частным уровнем доступа, используя основное приложение .net, и он работает нормально.

Код:

private static string GetContainerSasUri(CloudBlobContainer container, string storedPolicyName = null)
{
  string sasContainerToken;

  if (storedPolicyName == null)
  {          
     SharedAccessBlobPolicy adHocPolicy = new SharedAccessBlobPolicy()
     {
         SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-1),
         SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(2),
         Permissions = SharedAccessBlobPermissions.Read
     };

     sasContainerToken = container.GetSharedAccessSignature(adHocPolicy, null);
   }
   else
      sasContainerToken = container.GetSharedAccessSignature(null, storedPolicyName);


    return container.Uri + sasContainerToken;
}

Теперь я хочу сделать то же самое, используя Angular (генерируя токены SAS). Я погуглил и нашел несколько ссылок, но ни одна из них не объясняет это подробно. Есть какой-либо способ сделать это?

0
Ask 24 Апр 2020 в 10:35

1 ответ

Теперь я хочу сделать то же самое, используя Angular (генерируя токены SAS). Я погуглил и нашел несколько ссылок, но ни одна из них не объясняет это подробно. Есть какой-либо способ сделать это?

Простой ответ: нет, вы не можете создавать токены SAS из клиентской библиотеки, такой как Angular. Ну, технически вы можете, но для создания токенов SAS требуется ключ учетной записи хранения, и его создание на стороне клиента будет означать, что вы будете предоставлять ключ своей учетной записи хранения всем, кто использует ваше приложение.

Лучшим вариантом было бы сделать вызов API к вашей серверной службе и заставить эту службу создать для вас токен SAS. Таким образом, вы можете сохранить ключ своей учетной записи в безопасности.

2
Gaurav Mantri 24 Апр 2020 в 10:40
Я полностью согласен с тобой. Но все же мне любопытно, есть ли способ, которым даже я должен раскрыть свой ключ хранилища?
 – 
Ask
24 Апр 2020 в 10:43
Да, это, безусловно, возможно (учитывая риски). Просто ознакомьтесь с пакетом SDK для JavaScript для службы хранилища Azure, и вы точно узнаете, как это можно сделать.
 – 
Gaurav Mantri
24 Апр 2020 в 10:45
Как я уже упоминал, я уже искал это, но нигде не мог найти никакой хорошей помощи, так что не могли бы вы дать мне какую-нибудь хорошую ссылку, где это хорошо объяснено?
 – 
Ask
24 Апр 2020 в 10:53
См. это: github.com/Azure/azure-sdk-for-js/blob/master/sdk/storage/…. Если что-то непонятно, обратитесь к документации REST API: learn.microsoft.com/en-us/rest/api/storageservices/… :). ХТН.
 – 
Gaurav Mantri
24 Апр 2020 в 10:59