2016-10-05 10 views
0

Я пытаюсь скопировать blob с одного uri на другой (оба на одной учетной записи хранилища), оба имеют токен SAS для учетных данных. Это отлично работает с SAS Token, у которого нет ограничения IP-адреса, но не выполняется, если тогда токен-бета SOS-источника не ограничен IP-адресом.Azure copy blob с использованием SAS Token (с ограничением IP) 403 Forbidden

Примечание: Это не подведет, потому что у меня неправильно, другие функции BLOB IP работать, т.е. список, удалять, загружать и т.д.

Пример кода:

Uri sourceBlobUri = new Uri("https://mystorage.blob.core.windows.net/a-container/a.json"); 
Uri targetBlobUri = new Uri("https://mystorage.blob.core.windows.net/a-container-archive/a.json"); 

var prodTokenSource = @"A_SAS_TOKEN_WITH_A_IP_RESTRICTION"; 
var prodTokenArchive = @"A_SAS_TOKEN_WITH_A_IP_RESTRICTION"; 

StorageCredentials sourceCredentials = new StorageCredentials(prodTokenSource); 
StorageCredentials targetCredentials = new StorageCredentials(prodTokenArchive); 

CloudBlockBlob sourceBlob = new CloudBlockBlob(sourceBlobUri, sourceCredentials); 
CloudBlockBlob targetBlob = new CloudBlockBlob(targetBlobUri, targetCredentials); 

await targetBlob.StartCopyAsync(sourceBlob); //Fails 403 error 

Одно предположение, что запрос на копирование происходит из Azure, поэтому IP-адрес заблокирован? Должен ли я настроить исходный токен SAS для приема диапазона IP-адресов из Azure? Есть ли другой способ скопировать капли, которые позволяют использовать токены SAS?

ответ

2

Предполагается, что запрос на копирование происходит из Azure, так что IP-адрес заблокирован? Должен ли я настроить токен источника SAS на принять диапазон IP-адресов от Azure?

Вы абсолютно правы. Операция копирования - это операция на стороне сервера, а IP-адрес, указанный в марке SAS, - это IP-адрес клиента. Поскольку IP-адрес, включенный в SAS, не является Azure IP-адресом, операция копирования не работает. Вы можете настроить SAS Token на прием диапазона IP из Azure, но я предполагаю, что для копирования внутреннего внутреннего IP-адреса используется, поэтому я не уверен, что это сработает.

Есть ли другой способ скопировать капли, позволяющие использовать токены SAS?

Я бы рекомендовал не использовать IP ACLing в SAS для операции копирования, то есть не указывать ограничение IP-адреса в SAS для операции копирования.

+0

Хорошо, спасибо. Интересно, следует ли считать эту ошибку ошибкой в ​​API? Функция есть, но не работает так, как написано в документации. Возможно, я должен попросить, чтобы метод копирования сохранял исходные учетные данные. –

+1

Я бы не назвал это ошибкой, поскольку функция работает по назначению. Вы хотите, чтобы URL-адрес SAS использовался с определенного IP-адреса (ов), и это то, что он делает. –

 Смежные вопросы

  • Нет связанных вопросов^_^