При использовании DefaultAzureCredential веб-приложение пытается использовать ManagedIdentityCredential на локальном компьютере.

Я использую DefaulAzureCredential (Azure.Identity v1.2.3) для доступа к ресурсам в Azure. В Program.cs моего веб-приложения Asp.Net Core 3.1 я настроил доступ к хранилищу ключей Azure, как показано ниже:

      public static void Main(string[] args)
{
    CreateHostBuilder(args).Build().Run();
}

public static IHostBuilder CreateHostBuilder(string[] args)
{
    return Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((context, builder) =>
        {
            var secretClient = new SecretClient(
                new Uri("https://MyKeyVault.vault.azure.net/"),
                new DefaultAzureCredential());
            builder.AddAzureKeyVault(secretClient, new KeyVaultSecretManager());
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });
}

Приведенный выше код работает должным образом на моем локальном компьютере, когда я отлаживаю исходный код из Visual Studio 2019, нажимая F5. Из документации MS (ссылка выше) я вижу, что DefaultAzureCredential попытается использовать различные учетные данные в следующем порядке: EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredential, VisualStudioCredential и т. Д. Я проверил, какие учетные данные использовал мой локальный компьютер разработчика, заменив DefaultAzureCredential на выше учетные данные:

      .ConfigureAppConfiguration((context, builder) =>
{
    var secretClient = new SecretClient(
        new Uri("https://MyKeyVault.vault.azure.net/"),
        new EnvironmentCredential());
    builder.AddAzureKeyVault(secretClient, new KeyVaultSecretManager());
})

Вышеупомянутое быстро вызвало исключение: CredentialUnavailableException: EnvironmentCredential authentication unavailable. Переменные среды настроены не полностью.

Аналогичное исключение создается для ManagedIdentityCredential: CredentialUnavailableException: проверка подлинности ManagedIdentityCredential недоступна. Конечная точка управляемой идентификации не найдена.

Однако работали и SharedTokenCacheCredential, и VisualStudioCredential.

Теперь я думаю, что приведенное выше поведение правильное. Я не устанавливал необходимые переменные среды (такие как идентификатор клиента, идентификатор клиента и т. Д.), И я думаю, что ManagedIdentityCredential доступен только тогда, когда мое веб-приложение работает в среде Azure (см. Этот документ ).

Теперь о проблеме. На моем только что установленном компьютере я запустил свое веб-приложение из Visual Studio 2019, и оно не удалось: AuthenticationFailedException: Ошибка проверки подлинности ManagedIdentityCredential: Ошибка повторной попытки после 4 попыток.

Использование EnvironmentCredential приводит к тому же исключению, что и на моем старом компьютере, чего и следовало ожидать. Кроме того, использование SharedTokenCacheCredential и VisualStudioCredential работало так же, как на моем старом компьютере. Судя по описанию ошибки, на моем новом компьютере каким-то образом веб-приложение пытается использовать ManagedIdentityCredential и терпит неудачу. Что вызывает эту проблему?

0 ответов

Другие вопросы по тегам