Авторизация не удалась, пока wget Azure REST API

Я пытаюсь собрать лазурные метрики, используя REST API. У меня есть бесплатная подписка на учетную запись Azure.

Я использую следующий wget для получения сообщения json.

wget https://management.azure.com/subscriptions/XXXXXXX/resourceGroups/RG_SOUTH_INDIA/providers/Microsoft.Compute/virtualMachineScaleSets/linuxscal/metrics?api-version=2014-04-01

XXXXXXX - это мой идентификатор подписки.

Я получаю следующее сообщение об ошибке.

Resolving management.azure.com... 13.67.231.219
Connecting to management.azure.com|13.67.231.219|:443... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Authorization failed.

Что не так с моей подпиской / авторизацией?!!

Заранее спасибо за вашу помощь, ребята! Я застрял!!

2 ответа

Вы должны включить Authorization заголовок с Bearer токен в вашем звонке:

GET /subscriptions?api-version=2015-01-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json

Посмотрите на armclient, так как вы действительно не хотите делать все это вручную (или завитком): https://www.npmjs.com/package/armclient

// ES6
import ArmClient, { clientCredentials } from 'armclient';

const client = ArmClient({ 
  subscriptionId: '111111-2222-3333333',
  auth: clientCredentials({
    tenantId: '444444-555555-666666666',
    clientId: '777777-888888-999999999',
    clientSecret: 'aaaabbbbbccccc' // or servicePrincipalPassword
  })
});

Ваш /metrics вызов становится:

client.get('/resourceGroups/RG_SOUTH_INDIA/providers/Microsoft.Compute/virtualMachineScaleSets/linuxscal/metrics', { 'api-version': '2014-04-01' })
  .then((res) => {
    console.log(res.body);
    console.log(res.headers);
  })
  .catch((err) => {
    console.log(err);
  });

Указав опцию --user а также --ask-password wget запросит учетные данные. Ниже приведен пример. Измените имя пользователя и ссылку на ваши потребности

wget --user=username --ask-password https://YOUR_URL
Другие вопросы по тегам