Estoy tratando de conectar mi aplicación principal de aspnet que apunta a .net framework con Azure Keyvault. En una nueva máquina virtual de Azure que admite la identidad, todo funciona bien, pero esta aplicación está alojada en una máquina virtual de Azure clásica que no admite la identidad. Creé la variable de entorno del sistema AzureServiceAuthConnectionString que ya están usando varias otras aplicaciones de .net framework con Azure keyvault y funcionan perfectamente.
Mirando mis registros de salida estándar, obtengo la siguiente excepción cada vez.
Azure.Identity.CredentialUnavailableException: DefaultAzureCredential failed to retrieve a token from the included credentials EnvironmentCredential authentication unavailable. Environment variables are not fully configured ManagedIdentityCredential authentication unavailable, the requested identity has not been assigned to this resource.Yo uso el siguiente código en el inicio:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseApplicationInsights(ConfigurationManager.AppSettings["applicationInsightsInstrumentationKey"]) .ConfigureKestrel(options => options.AddServerHeader = false) .UseIISIntegration() .ConfigureAppConfiguration((context, config) => { var vaultName = ConfigurationManager.AppSettings["VaultName"]; if (!string.IsNullOrEmpty(vaultName)) { var azureServiceTokenProvider = new AzureServiceTokenProvider(); var keyVaultClient = new KeyVaultClient( new KeyVaultClient.AuthenticationCallback( azureServiceTokenProvider.KeyVaultTokenCallback)); config.AddAzureKeyVault( $"https://{vaultName}.vault.azure.net/", keyVaultClient, new DefaultKeyVaultSecretManager()); } }) .UseStartup<Startup>();Y en el web.config los siguientes elementos:
<configSections> <section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false"/> </configSections> <configBuilders> <builders> <add name="AzureKeyVault" vaultName="<#= this.VaultName #>" type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure, Version=2.0.0.0, Culture=neutral" vaultUri="https://<#= this.VaultName #>.vault.azure.net" /> </builders> </configBuilders> <connectionStrings configBuilders="AzureKeyVault"> <add name="ConnectionString" connectionString="" providerName="System.Data.SqlClient"/> </connectionStrings>¿Podría validar que está configurando las siguientes variables de entorno del sistema?
AZURE_CLIENT_ID : ID de la aplicación de la entidad de servicio
AZURE_TENANT_ID : ID del arrendatario de Azure Active Directory del principal
AZURE_CLIENT_SECRET : uno de los secretos de cliente de la entidad de servicio
Este error también puede ocurrir si Visual Studio pierde su conexión de Autenticación de servicio de Azure por algún motivo o si sus credenciales reales de AD han cambiado (por ejemplo, un cambio de contraseña).
En este caso, simplemente iniciar sesión de nuevo me solucionó esto:
En Visual Studio, vaya a Herramientas > Opciones. Expanda "Autenticación del servicio Azure" > "Selección de cuenta". Si ve un enlace "Vuelva a ingresar sus credenciales", haga clic en él e inicie sesión nuevamente. De lo contrario, intente un cierre de sesión regular + inicio de sesión a través de su perfil de Visual Studio en la parte superior derecha.
También me he enfrentado a este problema en la aplicación VS 2019. Simplemente vuelva a ingresar las credenciales para el usuario que inició sesión en VS, que tiene acceso al grupo de recursos de Azure.
Espero que solucione el problema.