Авторизация не удалась, пока 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