Obtenga información sobre cómo conectar una aplicación de ASP.NET Core que se ejecuta en Azure App Service, a Azure App Configuration, mediante uno de los métodos siguientes:
- Identidad administrada asignada por el sistema (SMI)
- Identidad administrada asignada por el usuario (UMI)
- Entidad de servicio
- Cadena de conexión
En este tutorial, se usa la CLI de Azure para completar las tareas siguientes:
- Configuración de los recursos de Azure
- Creación de una conexión entre una aplicación web y App Configuration
- Compilación e implementación de la aplicación en Azure App Service
Prerequisites
Inicio de sesión en Azure
Ejecute az login en la CLI de Azure para iniciar sesión en Azure.
Configuración de los recursos de Azure
Empiece por crear los recursos de Azure.
Clone el siguiente repositorio de ejemplo:
git clone https://github.com/Azure-Samples/serviceconnector-webapp-appconfig-dotnet.git
Implemente la aplicación web en Azure.
Siga estos pasos para crear una instancia de App Service e implementar la aplicación de ejemplo. Asegúrese de que tiene el rol Colaborador o Propietario de la suscripción.
Cree un servicio de aplicaciones e implemente la aplicación de ejemplo que usa la identidad administrada asignada por el sistema para interactuar con App Config.
# Change directory to the SMI sample
cd serviceconnector-webapp-appconfig-dotnet\system-managed-identity
# Create a web app
LOCATION='eastus'
RESOURCE_GROUP_NAME='service-connector-tutorial-rg'
APP_SERVICE_NAME='webapp-appconfig-smi'
az webapp up --location $LOCATION --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME
| Parameter |
Description |
Example |
| Location |
Elija una ubicación cercana a usted. Use az account list-locations --output table para enumerar ubicaciones. |
eastus |
| Definición de un nombre de grupo de recursos |
Use este grupo de recursos para organizar todos los recursos de Azure necesarios para completar este tutorial. |
service-connector-tutorial-rg |
| Nombre de App Service |
El nombre del servicio de aplicaciones se usa como nombre del recurso en Azure y para formar el nombre de dominio completo de la aplicación, en forma del punto de conexión del servidor. Los caracteres permitidos son A-Z, 0-9 y -. Azure anexa una cadena aleatoria para que el punto de conexión del servidor sea único en todas las instancias de Azure. |
webapp-appconfig-smi |
Cree un servicio de aplicaciones e implemente la aplicación de ejemplo que usa la identidad administrada asignada por el usuario para interactuar con App Config.
# Change directory to the UMI sample
cd serviceconnector-webapp-appconfig-dotnet\user-assigned-managed-identity
# Create a web app
LOCATION='eastus'
RESOURCE_GROUP_NAME='service-connector-tutorial-rg'
APP_SERVICE_NAME='webapp-appconfig-umi'
az webapp up --location $LOCATION --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME
| Parameter |
Description |
Example |
| Location |
Elija una ubicación cercana a usted. Use az account list-locations --output table para enumerar ubicaciones. |
eastus |
| Definición de un nombre de grupo de recursos |
Use este grupo de recursos para organizar todos los recursos de Azure necesarios para completar este tutorial. |
service-connector-tutorial-rg |
| Nombre de App Service |
El nombre del servicio de aplicaciones se usa como nombre del recurso en Azure y para formar el nombre de dominio completo de la aplicación, en forma del punto de conexión del servidor. Los caracteres permitidos son A-Z, 0-9 y -. Azure anexa una cadena aleatoria para que el punto de conexión del servidor sea único en todas las instancias de Azure. |
webapp-appconfig-umi |
Cree una identidad administrada asignada por el usuario. Guarde la salida en un bloc de notas temporal.
az identity create --resource-group $RESOURCE_GROUP_NAME --name "myIdentity"
Cree un servicio de aplicaciones e implemente la aplicación de ejemplo que usa la entidad de servicio para interactuar con App Config.
# Change directory to the service principal sample
cd serviceconnector-webapp-appconfig-dotnet\service-principal
# Create a web app
LOCATION='eastus'
RESOURCE_GROUP_NAME='service-connector-tutorial-rg'
APP_SERVICE_NAME='webapp-appconfig-sp'
az webapp up --location $LOCATION --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME
| Parameter |
Description |
Example |
| Location |
Elija una ubicación cercana a usted. Use az account list-locations --output table para enumerar ubicaciones. |
eastus |
| Definición de un nombre de grupo de recursos |
Use este grupo de recursos para organizar todos los recursos de Azure necesarios para completar este tutorial. |
service-connector-tutorial-rg |
| Nombre de App Service |
El nombre del servicio de aplicaciones se usa como nombre del recurso en Azure y para formar el nombre de dominio completo de la aplicación, en forma del punto de conexión del servidor. Los caracteres permitidos son A-Z, 0-9 y -. Azure anexa una cadena aleatoria para que el punto de conexión del servidor sea único en todas las instancias de Azure. |
webapp-appconfig-sp |
Crear una entidad de servicio. Asegúrese de reemplazar el yourSubscriptionID con su identificador de suscripción real. Guarde la salida en un bloc de notas temporal.
az ad sp create-for-rbac --name myServicePrincipal --role Contributor --scopes /subscriptions/{yourSubscriptionID}/resourceGroups/$RESOURCE_GROUP_NAME
Warning
Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación descrito en este procedimiento requiere un grado de confianza muy alto en la aplicación. Conlleva riesgos que no están presentes en otros flujos. Solo debe usar este flujo cuando otros flujos más seguros, como las identidades administradas, no sean viables.
Cree un servicio de aplicaciones e implemente la aplicación de ejemplo que usa la cadena de conexión para interactuar con App Config.
# Change directory to the service principal sample
cd serviceconnector-webapp-appconfig-dotnet\connection-string
# Create a web app
LOCATION='eastus'
RESOURCE_GROUP_NAME='service-connector-tutorial-rg'
APP_SERVICE_NAME='webapp-appconfig-cs'
az webapp up --location $LOCATION --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME
| Parameter |
Description |
Example |
| Location |
Elija una ubicación cercana a usted. Use az account list-locations --output table para enumerar ubicaciones. |
eastus |
| Definición de un nombre de grupo de recursos |
Use este grupo de recursos para organizar todos los recursos de Azure necesarios para completar este tutorial. |
service-connector-tutorial-rg |
| Nombre de App Service |
El nombre del servicio de aplicaciones se usa como nombre del recurso en Azure y para formar el nombre de dominio completo de la aplicación, en forma del punto de conexión del servidor. Los caracteres permitidos son A-Z, 0-9 y -. Azure anexa una cadena aleatoria para que el punto de conexión del servidor sea único en todas las instancias de Azure. |
webapp-appconfig-cs |
Cree un almacén de Azure App Configuration.
APP_CONFIG_NAME='my-app-config'
az appconfig create --resource-group $RESOURCE_GROUP_NAME --name $APP_CONFIG_NAME --sku Free --location eastus
Importe el archivo de configuración de prueba en Azure App Configuration.
Importe el archivo de configuración de prueba en Azure App Configuration mediante una identidad administrada asignada por el sistema.
Cambie los directorios a la carpeta ServiceConnectorSample.
Importe el archivo de configuración de prueba ./sampleconfigs.json en el almacén de App Configuration. Si usa Cloud Shell, cargue sampleconfigs.json antes de ejecutar el comando.
az appconfig kv import --name $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
Importe el archivo de configuración de prueba en Azure App Configuration mediante una identidad administrada asignada por el usuario.
Cambie los directorios a la carpeta ServiceConnectorSample.
Importe el archivo de configuración de prueba ./sampleconfigs.json en el almacén de App Configuration. Si usa Cloud Shell, cargue sampleconfigs.json antes de ejecutar el comando.
az appconfig kv import --name $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
Importe el archivo de configuración de prueba en Azure App Configuration mediante una entidad de servicio.
Cambie los directorios a la carpeta ServiceConnectorSample.
Importe el archivo de configuración de prueba ./sampleconfigs.json en el almacén de App Configuration. Si usa Cloud Shell, cargue sampleconfigs.json antes de ejecutar el comando.
az appconfig kv import --name $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
Warning
Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación descrito en este procedimiento requiere un grado de confianza muy alto en la aplicación. Conlleva riesgos que no están presentes en otros flujos. Solo debe usar este flujo cuando otros flujos más seguros, como las identidades administradas, no sean viables.
Importe el archivo de configuración de prueba en Azure App Configuration mediante una cadena de conexión.
Cambie los directorios a la carpeta ServiceConnectorSample.
Importe el archivo de configuración de prueba ./sampleconfigs.json en el almacén de App Configuration. Si usa Cloud Shell, cargue sampleconfigs.json antes de ejecutar el comando.
az appconfig kv import --name $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
Conexión de la aplicación web a App Configuration
Cree una conexión entre la aplicación web y el almacén de App Configuration.
Cree una conexión entre la aplicación web y el almacén de App Configuration, mediante una autenticación de identidad administrada asignada por el sistema. Esta conexión se realiza mediante el conector de servicio.
az webapp connection create appconfig --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME --app-config $APP_CONFIG_NAME --tg $RESOURCE_GROUP_NAME --connection "app_config_smi" --system-identity
system-identity hace referencia al tipo de autenticación de identidad administrada asignada por el sistema (SMI). Service Connector también admite las siguientes autenticaciones: identidad administrada asignada por el usuario (UMI), cadena de conexión (secreto) y entidad de servicio.
Cree una conexión entre la aplicación web y el almacén de App Configuration, mediante una autenticación de identidad administrada asignada por el usuario. Esta conexión se realiza mediante el conector de servicio.
az webapp connection create appconfig --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME --app-config $APP_CONFIG_NAME --tg $RESOURCE_GROUP_NAME --connection "app_config_umi" --user-identity client-id=<myIdentityClientId> subs-id=<myTestSubsId>
user-identity hace referencia al tipo de autenticación de identidad administrada asignada por el usuario. Service Connector también admite las siguientes autenticaciones: identidad administrada asignada por el sistema, cadena de conexión (secreto) y entidad de servicio.
Hay dos maneras de buscar client-id:
- En la CLI de Azure, escriba
az identity show --name "myIdentity" --resource-group $RESOURCE_GROUP_NAME --query 'clientId'.
- En Azure Portal, abra la identidad administrada que se creó anteriormente y, en Información general, obtenga el valor en Id. de cliente.
Cree una conexión entre la aplicación web y el almacén de App Configuration, mediante una entidad de servicio. Esta configuración se realiza a través de Service Connector.
az webapp connection create appconfig --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME --app-config $APP_CONFIG_NAME --tg $RESOURCE_GROUP_NAME --connection "app_config_sp" --service-principal client-id=<mySPClientId> secret=<mySPSecret>
service-principal hace referencia al tipo de autenticación de la entidad de servicio. Service Connector también admite las siguientes autenticaciones: identidad administrada asignada por el sistema (UMI), identidad administrada asignada por el usuario (UMI) y cadena de conexión (secreto).
Cree una conexión entre la aplicación web y el almacén de App Configuration, mediante una cadena de conexión. Esta conexión se realiza mediante el conector de servicio.
az webapp connection create appconfig --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME --app-config $APP_CONFIG_NAME --tg $RESOURCE_GROUP_NAME --connection "app_config_cs" --secret
secret hace referencia al tipo de autenticación de cadena de conexión. El conector de servicio también admite las autenticaciones siguientes: identidad administrada asignada por el sistema, identidad administrada asignada por el usuario y entidad de servicio.
Validación de la conexión
Para comprobar si la conexión funciona, vaya a la aplicación web. La manera más fácil de llegar a la aplicación web es abrirla en Azure Portal. En la página Información general , seleccione el dominio predeterminado. Una vez que el sitio web esté en marcha, verá que aparece: Hola. Azure WebApp está conectado a App Configuration por ServiceConnector ahora.
Funcionamiento
Descubra lo que Service Connector administra en segundo plano para cada tipo de autenticación.
El conector de servicio administra la configuración de conexión de forma automática:
- Configure el valor
AZURE_APPCONFIGURATION_ENDPOINT de la aplicación web para permitir que acceda a él y obtenga el punto de conexión de App Configuration. Obtener acceso al código de ejemplo.
- Active la autenticación administrada asignada por el sistema de la aplicación web y conceda a App Configuration un rol lector de datos para permitir que la aplicación se autentique en App Configuration mediante DefaultAzureCredential de Azure Identity. Obtener acceso al código de ejemplo.
El conector de servicio administra la configuración de conexión de forma automática:
- Configure el valor
AZURE_APPCONFIGURATION_ENDPOINT, AZURE_APPCONFIGURATION_CLIENTID de la aplicación web para permitir que acceda a él y obtenga el punto de conexión de App Configuration en code;
- Active la autenticación administrada asignada por el usuario de la aplicación web y conceda a App Configuration un rol de lector de datos para permitir que la aplicación se autentique en App Configuration mediante DefaultAzureCredential de Azure.Identity. Obtener acceso al código de ejemplo.
El conector de servicio administra la configuración de conexión de forma automática:
- Configure el valor
AZURE_APPCONFIGURATION_ENDPOINT de la aplicación web para permitir que acceda a él y obtenga el punto de conexión de App Configuration. Obtener acceso al código de ejemplo.
- Guarde las credenciales de entidad de servicio en WebApp AppSettings
AZURE_APPCONFIGURATION_CLIENTID.
AZURE_APPCONFIGURATION_TENANTID, AZURE_APPCONFIGURATION_CLIENTSECRET y conceda a App Configuration el rol de Lector de datos para la entidad de servicio, para que la aplicación se pueda autenticar en App Configuration en code mediante ClientSecretCredential de Azure.Identity.
El conector de servicio administra la configuración de conexión de forma automática:
- Configure el valor
AZURE_APPCONFIGURATION_CONNECTIONSTRING de la aplicación web para permitir que acceda a él y obtenga la cadena de conexión de App Configuration. Obtener acceso al código de ejemplo.
- Active la autenticación administrada asignada por el sistema de la aplicación web y conceda a App Configuration un rol lector de datos para permitir que la aplicación se autentique en App Configuration mediante DefaultAzureCredential de Azure Identity. Obtener acceso al código de ejemplo.
Para más información, consulte Información interna de Service Connector.
Prueba (opcional)
Opcionalmente, realice las pruebas siguientes:
Actualice el valor de la clave SampleApplication:Settings:Messages en el almacén de App Configuration.
az appconfig kv set --name <myAppConfigStoreName> --key SampleApplication:Settings:Messages --value hello --yes
Vaya a la aplicación web de Azure, como se ha descrito anteriormente y actualice la página. Verá que el mensaje se actualiza a: hello.
Limpieza de recursos
Una vez que haya terminado, si ya no va a usar estos recursos de Azure, elimínelos mediante la ejecución del az group delete comando . Este comando elimina el grupo de recursos y todos los recursos que contiene.
az group delete --name <myResourceGroupName> --yes
Paso siguiente