2016-02-12 1 views
0

Я пытаюсь использовать лазурный отдых api из powershell, но застрял с частью авторизации. Используется для создания подписи с помощью этой статьи https://msdn.microsoft.com/en-us/library/azure/dd179428.aspxAzure tables rest api авторизация

Сценарий:

$StorageAccount = "account" 
$Key = "key" 

$sharedKey = [System.Convert]::FromBase64String($Key) 
$date = [System.DateTime]::UtcNow.ToString("R") 

$resource = "/test()?`$top" # also tried /test() /test /test()?`$top=1 
$stringToSign = "$date`n/$StorageAccount$resource" 
$hasher = New-Object System.Security.Cryptography.HMACSHA256 
$hasher.Key = $sharedKey 

$signedSignature = [System.Convert]::ToBase64String($hasher.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($stringToSign))) 

$authHeader = "SharedKeyLite ${StorageAccount}:$signedSignature" 

$headers = @{"x-ms-date"=$date 
      "Authorization"=$authHeader 
      "Accept"="application/atom+xml"} 

try { 
    $tables = Invoke-RestMethod -Uri "https://$StorageAccount.table.core.windows.net/test()?`$top=1" -Headers $headers |% { 
     $_.content.properties.tablename 
    } 
} catch [Exception] { 
    $_ 
} 

Я был в состоянии перечислить таблицы (/таблиц), но когда я пытаюсь выполнить некоторые OData запросов (/теста() $ top = 1 здесь) Я получаю ошибку авторизации.

ответ

2

Я скопирую ваш код и попробую его в конце. Он работает нормально.

Вот что-то, что я хочу указать.

  1. Для "Query Entities", вы должны использовать $resource = "/test()" и $resource = "/test" для "Insert Entity". $resource = "/test()?$top" и $resource = "/test()?$top=1" неверны.

  2. Убедитесь, что ваш $Key указан правильно. Поскольку вы используете этот ключ для создания таблицы, я не думаю, что это так.

  3. Убедитесь, что в вашем столе есть хотя бы одна строка.

+0

Спасибо за ответ! «$ Key» является первичным ключом из моей учетной записи хранилища. Когда я устанавливаю $ resource как '/ test()' запрос терпит неудачу с ошибкой auth 'сервер не смог аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись. ' – forik

+0

Я также создал новую таблицу с помощью' $ key', хотя я продолжаю получать ошибку auth :( – forik

+0

Ваш скрипт верен. Попробуйте свою учетную запись и ключ хранения с помощью Azure Storage Explorer Если вы не работаете, восстановите свой ключ. –

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

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