Значение se недействительно в токене SAS

Я создал токен SAS, который, кажется, работает, если я обращаюсь к частному контейнеру с URL: https://mystorage.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-12-11&sr=c&sig=11111111111123%3D&se=2016-07-29T11%3A32%3A28Z&sp=cwl

Код:

 SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy()
        {
            Permissions = SharedAccessBlobPermissions.Create | 
                            SharedAccessBlobPermissions.Write | 
                            SharedAccessBlobPermissions.List |
                            SharedAccessBlobPermissions.Read,
            SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(15)
        };

        var blobStorage = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobStorage.GetContainerReference(blobContainerName);

        string sasContainerToken = container.GetSharedAccessSignature(policy);

Но когда я использую этот sasContainerToken в AzCopy (из командного файла), я получаю следующую ошибку:

[2016-07-29 14:00:38][ERROR] The syntax of the command is incorrect.
Invalid SAS  token in parameter "DestSAS". Value of "se" is invalid in SAS token.

Проблемы, похоже, связаны со временем, которое экранируется с помощью «% 3A», изменение этого значения на «:» устраняет ошибку, но теперь я не авторизован из-за неправильного SAS.

Любые идеи?

ОБНОВЛЕНИЕ: создание учетной записи SAS с портала Azure, похоже, решает ошибку AzCopy, но по-прежнему доступ запрещен из отдельных загрузок больших двоичных объектов

AzCopy 
  /Source:C:\temp\myfiles 
  /Dest:"https://mystorage.blob.core.windows.net/mycontainer" 
  /DestSas:"?sv=2015-04-05&ss=bfqt&srt=sco&sp=rwdlacup&se=2016-07-30T21:11:31Z&st=2016-07-28T13:11:31Z&spr=https&sig=p%2FlCgbgMRU7lH7111111YyxEDE21rZWFo4%3D"

Изменение / DestSas на / DestKey (с действующим ключом) работает, но дает слишком много разрешений


person Erik Oppedijk    schedule 29.07.2016    source источник
comment
Можете ли вы попробовать, создав новый SAS, а затем заменив% 3A на:?   -  person Gaurav Mantri    schedule 29.07.2016
comment
Я сделал, это решает ошибку AzCopy, но затем AzCopy использует этот поврежденный SAS, и это неавторизовано. Похоже, что AzCopy выполняет какой-то странный разбор, мой ноутбук находится в голландском языке, но дата - ISO, так что это не может быть проблемой   -  person Erik Oppedijk    schedule 29.07.2016


Ответы (1)


Вы запускаете AzCopy в скрипте типа * .bat?

Если это так, то в поле «se = 2016-07-29T11% 3A32% 3A28Z» необходимо удвоить «%» до «se = 2016-07-29T11 %% 3A32 %% 3A28Z». Это потому, что "% 3" имеет особое значение в * .bat. (Вам нужно удвоить все "%" в SAS)

И обратите внимание, все «% 3A» не следует преобразовывать обратно в «:», иначе SAS получит отказ в доступе.

Кстати, какую версию AzCopy вы используете? Проблема с SAS также может быть вызвана несоответствием версии клиентской библиотеки между AzCopy и клиентской библиотекой для создания SAS.

person Wei Wei -Microsoft    schedule 01.08.2016
comment
Спасибо, экранирование% помогло, я уже пробовал те же клиентские библиотеки (6.0) - person Erik Oppedijk; 01.08.2016