Мне нужно развернуть приложение .Net Core 2.2 на виртуальной машине Azure, и я должен прочитать некоторые учетные данные из Azure Keyvault.
У меня нет полного контроля над окружающей средой.
Я следовал этому уроку
Использование хранилища ключей Azure с виртуальной машиной Windows в .NET
сколько мог, но на самом деле виртуальная машина уже была создана сисадмином.
Я создал KeyVault в той же группе ресурсов виртуальной машины и добавил 2 секрета.
Я проверил, что виртуальная машина зарегистрирована в Active Directory и ей присвоен системный идентификатор.
Я добавил в свой Keyvault политику доступа, позволяющую читать и перечислять секреты моей ВМ.
Я попробовал пример приложения из учебника.
Если я запускаю его из Visual Studio на моем компьютере (используя Azure Cli для аутентификации с помощью AZ LOGIN), я могу получить секреты
При развертывании приложения на моей виртуальной машине Azure я получаю исключение «Идентификация не найдена» при попытке получить токен
Я также пытался получить токен с помощью powershell на виртуальной машине:
$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://vault.azure.net/'-Method GET -Headers @{Metadata="true"}
и я получаю эту ошибку
Invoke-WebRequest : {"error":"invalid_request","error_description":"Identity not found"}
At line:1 char:13
+ $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/i ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Если я использую https (учебник использует http, но для большей безопасности я попробовал также вариант https)
$response = Invoke-WebRequest -Uri 'https://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://vault.azure.net/' -Method GET -Headers @{Metadata="true"}
есть заметная задержка, тогда я получаю это:
Invoke-WebRequest : Unable to connect to the remote server
At line:1 char:13
+ $response = Invoke-WebRequest -Uri 'https://169.254.169.254/metadata/ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Видите ли вы какие-либо ошибки в моих настройках или есть предложения по устранению неполадок?