Autenticación de aplicaciones .NET en servicios de Azure durante el desarrollo local mediante cuentas de desarrollador
Los desarrolladores deben depurar y probar aplicaciones en la nube en sus estaciones de trabajo locales. Cuando se ejecuta una aplicación en la estación de trabajo de un desarrollador durante el desarrollo local, esta debe autenticarse en los servicios de Azure que usa. En este artículo se explica cómo usar las credenciales de Azure de un desarrollador para autenticar la aplicación en Azure durante el desarrollo local.
Para que una aplicación se autentique en Azure durante el desarrollo local mediante las credenciales de Azure del desarrollador, el desarrollador debe iniciar sesión en Azure con una de las herramientas de desarrollo siguientes:
- Visual Studio
- CLI de Azure
- CLI de desarrollo de Azure
- Azure PowerShell
La biblioteca de identidades de Azure puede detectar que el desarrollador ha iniciado sesión desde una de estas herramientas. Después, la biblioteca puede obtener el token de acceso de Microsoft Entra mediante la herramienta para autenticar la aplicación en Azure como el usuario que inició sesión.
Este enfoque es más fácil de configurar para un equipo de desarrollo, ya que aprovecha las cuentas de Azure existentes de los desarrolladores. Sin embargo, es probable que la cuenta de un desarrollador tenga más permisos que los que requiere la aplicación, lo que supone superar los permisos con los que se ejecutará la aplicación en producción. Como alternativa, puede crear entidades de servicio de aplicación para usarlas durante el desarrollo local que se pueden limitar para tener solo el acceso necesario para la aplicación.
1: Creación de un grupo de Microsoft Entra para el desarrollo local
Puesto que casi siempre hay varios desarrolladores que trabajan en una aplicación, se recomienda usar un grupo de Microsoft Entra para encapsular los roles (permisos) que la aplicación necesita en el desarrollo local. Este procedimiento ofrece las siguientes ventajas:
- Todos los desarrolladores están seguros de tener asignados los mismos roles, ya que los roles se asignan en el nivel de grupo.
- Si se necesita un nuevo rol para la aplicación, solo debe agregarse al grupo para la aplicación.
- Si un nuevo desarrollador se une al equipo, obtendrá los permisos necesarios para trabajar en la aplicación después de agregarlo al grupo.
Si tiene un grupo de Microsoft Entra existente para el equipo de desarrollo, puede usar ese grupo. De lo contrario, complete los pasos que se describen a continuación para crear un grupo de Microsoft Entra.
Nota:
De forma predeterminada, la creación de grupos de Microsoft Entra se limita a determinados roles con privilegios en un directorio. Si no puede crear un grupo, póngase en contacto con un administrador del directorio. Si no puede agregar miembros a un grupo existente, póngase en contacto con el propietario del grupo o con un administrador de directorios. Para obtener más información, consulte Administración de grupos de Microsoft Entra y pertenencia a grupos.
2: Asignación de roles al grupo de Microsoft Entra
A continuación, debe determinar qué roles (permisos) necesita la aplicación y en qué recursos para, a continuación, asignar dichos roles a la aplicación. En este ejemplo, los roles se asignan al grupo de Microsoft Entra creado en el paso 1. Los grupos se pueden asignar a un rol en el ámbito de recurso, grupo de recursos o suscripción. En este ejemplo se muestra cómo asignar roles en el ámbito del grupo de recursos, ya que la mayoría de las aplicaciones agrupan todos sus recursos de Azure en un único grupo de recursos.
3: Inicio de sesión en Azure mediante herramientas de desarrollo
A continuación, inicie sesión en Azure con una de las diferentes herramientas de desarrollo. La cuenta con la que se autentique también debe existir en el grupo de Microsoft Entra que creó y configuró anteriormente.
Vaya a Herramientas>Opciones para abrir el cuadro de diálogo de opciones.
En el cuadro Opciones de búsqueda de la parte superior, escriba Azure para filtrar las opciones disponibles.
En Autenticación de servicio de Azure, elija Selección de cuenta.
Seleccione el menú desplegable en Elegir una cuenta y elija agregar una cuenta Microsoft. Se abrirá una ventana que le pedirá que elija una cuenta. Escriba las credenciales de la cuenta de Azure deseada y, a continuación, seleccione la confirmación.
Seleccione Aceptar para cerrar el cuadro de diálogo de opciones.
4: Implementación de DefaultAzureCredential en la aplicación
DefaultAzureCredential es una secuencia ordenada de mecanismos para autenticarse en Microsoft Entra. Cada mecanismo de autenticación es una clase derivada de la clase TokenCredential y se conoce como una credencial. En tiempo de ejecución, DefaultAzureCredential
intenta autenticarse con la primera credencial. Si esa credencial no puede adquirir un token de acceso, se intenta utilizar la siguiente credencial de la secuencia, y así sucesivamente hasta que se obtenga correctamente un token de acceso. De esta manera, la aplicación puede usar diferentes credenciales en distintos entornos sin implementar código específico del entorno.
El orden y las ubicaciones en las que DefaultAzureCredential
busca las credenciales se encuentran en DefaultAzureCredential.
Para usar DefaultAzureCredential
, agregue el paqueteAzure.Identity y, opcionalmente, los paquetes de Microsoft.Extensions.Azure a la aplicación:
En un terminal de su elección, vaya al directorio del proyecto de la aplicación y ejecute los siguientes comandos:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Se accede a los servicios de Azure mediante clases de cliente especializadas de las distintas bibliotecas cliente del SDK de Azure. Estas clases y sus propios servicios personalizados deben registrarse para que se pueda acceder a ellas a través de la inserción de dependencias en toda la aplicación. En Program.cs
, complete los pasos siguientes para registrar una clase de cliente y DefaultAzureCredential
:
- Incluya los espacios de nombres
Azure.Identity
yMicrosoft.Extensions.Azure
mediante las directivasusing
. - Registre el cliente de servicio de Azure mediante el método de extensión con el prefijo
Add
correspondiente. - Pase una instancia del objeto
DefaultAzureCredential
al métodoUseCredential
.
Por ejemplo:
using Microsoft.Extensions.Azure;
using Azure.Identity;
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
Una alternativa a UseCredential
consiste en crear instancias de DefaultAzureCredential
directamente:
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Cuando el código anterior se ejecuta en la estación de trabajo de desarrollo local, busca en las variables de entorno de una entidad de servicio de aplicación o en las herramientas de desarrollo instaladas localmente, como Visual Studio, un conjunto de credenciales de desarrollador. Se puede usar cualquier enfoque para autenticar la aplicación en los recursos de Azure durante el desarrollo local.
Cuando se implementa en Azure, este mismo código también puede autenticar tu aplicación en otros recursos de Azure. DefaultAzureCredential
puede recuperar la configuración del entorno y las configuraciones de identidad administrada para autenticarse en otros servicios automáticamente.