У меня возникают проблемы при получении секрета от azure keyvault с помощью пакета azure-keyvault из приложения узла, работающего на linux vm на azure.
Я использую следующий код:
import * as KeyVault from 'azure-keyvault';
import * as msRestAzure from 'ms-rest-azure'
function getKeyVaultCredentials(){
return msRestAzure.loginWithVmMSI();
}
function getKeyVaultSecret(credentials) {
let keyVaultClient = new KeyVault.KeyVaultClient(credentials,null);
return keyVaultClient.getSecret("my keyvault url here", 'my keyvault secret name here', "", null,null);
}
getKeyVaultCredentials().then(
getKeyVaultSecret
).then(function (secret){
//not getting here....
}).catch(function (err) {
//...error handling...
});
Я получаю ответ 401 при вызове getSecret.На keyvault и MSI установлены права доступа к машине.В сообщении об ошибке, похоже, нет заголовка аутентификации или токена, хотя в ответе я вижу заголовок, который выглядит как заголовок аутентификации.
Есть ли что-то, чего мне не хватает в моемреализация?
РЕДАКТИРОВАТЬ: Похоже, что пример, которым я поделился здесь, сработал бы, если бы я использовал
msRestAzure.loginWithVmMSI({resource: 'https://vault.azure.net' });
вместо вызова без параметров.