Как позвонить в Azure Client с узла через запрос https? - PullRequest
0 голосов
/ 27 июня 2018

У меня есть виртуальная машина, работающая в Azure. Я хотел позвонить в Azure VM с узла. Я совершенно не знаю, как получить API для Azure. Так как этого достичь?

У меня есть tenantID, ClientID, Client Secret и идентификатор подписки.

Также есть ли какая-то уникальная вещь, которую я могу получить от запуска ВМ, которая будет такой же, если я создам другую ВМ в Azure?

1 Ответ

0 голосов
/ 27 июня 2018

Попробуйте, учитывая, что у вас есть значения для доступа к хранилищу в переменной среды для получения секретов из хранилища Azure:

var _ = require('lodash'),
    msRestAzure = require('ms-rest-azure'),
    KeyVault = require('azure-keyvault'),
    AuthenticationContext = require('adal-node').AuthenticationContext,//Utility function to get key vault client

function getKeyVaultClient() {
    // service principal details to access the vault
    var clientId = process.env['CLIENT_ID']; // service principal
    var domain = process.env['DOMAIN']; // tenant id
    var secret = process.env['APPLICATION_SECRET'];
    return new Promise(function (resolve, reject) {
         msRestAzure.loginWithServicePrincipalSecret(clientId, secret, domain, function (err) {
                if (err) {
                    return reject(err);
                }
                // authenticate with key vault with a service principal
                var kvCredentials = new KeyVault.KeyVaultCredentials(authenticator);
                keyVaultClient = new KeyVault.KeyVaultClient(kvCredentials);
                return resolve(keyVaultClient);
            });
       })
}

function authenticator(challenge, callback) {
    // service principal details to access the vault
    var clientId = process.env['CLIENT_ID']; // service principal
    var secret = process.env['APPLICATION_SECRET'];
    // Create a new authentication context.
    var context = new AuthenticationContext(challenge.authorization);

    // Use the context to acquire an authentication token.
    return context.acquireTokenWithClientCredentials(challenge.resource, clientId, secret, function (err, tokenResponse) {
        if (err) {
            return callback(err);
        }
        // Calculate the value to be set in the request's Authorization header and resume the call.
        var authorizationValue = tokenResponse.tokenType + ' ' + tokenResponse.accessToken;

        return callback(null, authorizationValue);
    });
}

var vaultUri = 'https://' + process.env['VAULT_NAME'] + '.vault.azure.net/secrets/' + key;
getKeyVaultClient().then(function (vaultClient) {
            vaultClient.getSecret(vaultUri,
                function (err, result) {
                    if (err) {
                        return reject(err);
                    } else {
                        return resolve(result.value);
                    }
                });
    }).catch(function (err) {
        reject(err);
    })

Вы можете взглянуть на официальную документацию и примеры того, как получить доступ к ключам и секретам с помощью API Rest, предоставляемого лазурью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...