2016-06-16 4 views
0

Я пытаюсь загрузить изображение в хранилище Azure с помощью SAS. Вот код, который я использую для создания SAS.Ошибка аутентификации @ Azure node js генерирует SAS. Подпись не соответствует. Используемая строка для обозначения была w

function getWriteSAS() { 
    var blobService = storage.createBlobService(); 
    var container = 'container-name'; 
    var blobSAS = blobService.generateSharedAccessSignature(container, mCurrentRequest.param.blobName, getSharedAccessPolicy(10)); 
    urlForDownloading = blobService.host.primaryHost + container + '?' + blobSAS 
    mCurrentResponse.status(200).send({"SASURI" : urlForDownloading}) 
} 

function getSharedAccessPolicy(accessTimeInMinutes) { 
    var startDate = new Date(); 
    var expiryDate = new Date(startDate); 
    expiryDate.setMinutes(startDate.getMinutes() + accessTimeInMinutes); 
    startDate.setMinutes(startDate.getMinutes() - accessTimeInMinutes); 

    var sharedAccessPolicy = { 
     AccessPolicy: { 
      Permissions: storage.BlobUtilities.SharedAccessPermissions.WRITE, 
      Start: startDate, 
      Expiry: expiryDate 
     }, 
    }; 
    return sharedAccessPolicy; 
} 

Созданный URL выглядит некоторые вещи, как это: https://irewardchart.blob.core.windows.net/container-name?st=2016-06-16T06%3A24%3A52Z&se=2016-06-16T06%3A44%3A52Z&sp=w&sv=2015-04-05&sr=c&sig=c%2F%2B7AtkH7zwLhzF%2B74%2FUeMeQ4eLDnWvVDMkiqSqroqc%3D

Когда я пытаюсь ударить URL из браузера, я получаю этот результат.

<Error> 
<script/> 
<Code>AuthenticationFailed</Code> 
<Message> 
Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:2fab1644-0001-0087-7c99-c77b1a000000 Time:2016-06-16T06:36:14.5020064Z 
</Message> 
<AuthenticationErrorDetail> 
Signature did not match. String to sign used was w 2016-06-16T06:24:52Z 2016-06-16T06:44:52Z /blob/irewardchart/$root 2015-04-05 
</AuthenticationErrorDetail> 
</Error> 

Любая помощь здесь будет очень признательна.

+0

Пожалуйста, прочтите мой 2-ой ответ здесь: http://stackoverflow.com/questions/37678058/ загрузить к лазурным-шарикообразным использованием-САЦ-и-отдых/37692688 # 37692688. НТН. –

+0

Yeap, имя файла явно отсутствует. – sharptooth

+0

Привет, любое обновление сейчас? –

ответ

0

По вашему описанию URL, сгенерированный вашим кодом, пропустил шаблон blobName. Пожалуйста, дважды проверьте параметр mCurrentRequest.param.blobName в своем приложении, получите ли правильное значение.

И, кстати, есть еще две точки вы можете обратить внимание на:

  1. Если ваше требование, чтобы просмотреть содержимое двоичного объекта в браузере, я предложение использовать storage.BlobUtilities.SharedAccessPermissions.READ разрешения, которое может уменьшить вопрос разрешения.
  2. Поскольку узел szk-хранилища Azure предоставляет функцию, которая может генерировать URL-адрес blob с токеном SAS, getUrl(). Поэтому, пожалуйста, попробуйте следующий код, если вы проверили mCurrentRequest.param.blobName имеет правильное значение, но вы по-прежнему произошла проблема:

    ... 
    var blobSAS = blobService.generateSharedAccessSignature(<containerName>, <blobName>, getSharedAccessPolicy(10)); 
    var sharedBlobService = azure.createBlobServiceWithSas(blobService.host, blobSAS); 
    urlForDownloading = blobService.getUrl(container,blobName,blobSAS) 
    ... 
    
Смежные вопросы