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.

Diagrama que muestra una aplicación que se ejecuta en el desarrollo local mediante una identidad de herramienta de desarrollador para conectarse a los recursos de Azure.

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.

Instrucciones Instantánea
Vaya a la página Microsoft Entra ID en Azure Portal; para ello, escriba Microsoft Entra ID en el cuadro de búsqueda de la parte superior de la página. Seleccione Microsoft Entra ID en la sección Servicios. Captura de pantalla que muestra cómo usar la barra de búsqueda de la parte superior de Azure Portal para buscar la página Microsoft Entra ID y navegar hasta ella.
En la página Microsoft Entra ID, seleccione Grupos en el menú de la izquierda. Captura de pantalla que muestra la ubicación del elemento de menú Grupos en el menú de la izquierda de la página de directorio predeterminado de Microsoft Entra ID.
En la página Todos los grupos, seleccione Nuevo grupo. Captura de pantalla que muestra la ubicación del botón Nuevo grupo en la página Todos los grupos.
En la página Nuevo grupo:
  1. Seleccione Seguridad en la lista desplegable Tipo de grupo.
  2. Nombre de grupo → Nombre del grupo de seguridad, que normalmente se crea a partir del nombre de la aplicación. También resulta útil incluir una cadena como local-dev en el nombre del grupo para indicar el propósito del grupo.
  3. Descripción del grupo → Descripción del propósito del grupo.
  4. Seleccione el vínculo Sin miembros seleccionados en Miembros para agregar miembros al grupo.
Captura de pantalla en la que se muestra cómo crear un grupo de Microsoft Entra. La ubicación del vínculo que se va a seleccionar para agregar miembros a este grupo está resaltada.
En el cuadro de diálogo Agregar miembros:
  1. Use el cuadro de búsqueda para filtrar la lista de nombres de usuario en la lista.
  2. Seleccione uno o más usuarios para el desarrollo local de esta aplicación. Al elegir un objeto, el objeto se mueve a la lista Elementos seleccionados en la parte inferior del cuadro de diálogo.
  3. Cuando haya terminado, pulse el botón Seleccionar.
Captura de pantalla del cuadro de diálogo Agregar miembros que muestra cómo seleccionar las cuentas de desarrollador que se deben incluir en el grupo.
De nuevo en la página Nuevo grupo, seleccione Crear para crear el grupo. El grupo se creará y volverá a la página Todos los grupos. El grupo puede tardar hasta 30 segundos en aparecer y es posible que tenga que actualizar la página debido al almacenamiento en caché en Azure Portal. Captura de pantalla de la página Nuevo grupo que muestra cómo completar el proceso con la selección del botón Crear.

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.

Instrucciones Instantánea
Busque el grupo de recursos de la aplicación; para ello, busque el nombre del grupo de recursos mediante el cuadro de búsqueda situado en la parte superior de Azure Portal. Vaya al grupo de recursos. Para ello, seleccione el nombre del grupo de recursos en el encabezado Grupos de recursos del cuadro de diálogo. Captura de pantalla que muestra cómo usar el cuadro de búsqueda de la parte superior de Azure Portal para localizar el grupo de recursos al que desea asignar roles (permisos) y navegar hasta él.
En la página del grupo de recursos, seleccione Control de acceso (IAM) en el menú izquierdo. Captura de pantalla de la página del grupo de recursos que muestra la ubicación del elemento de menú de Control de acceso (IAM).
En la página Control de acceso (IAM):
  1. Seleccione la pestaña Asignaciones de roles.
  2. Seleccione + Agregar en el menú superior y, a continuación, Agregar asignación de roles en el menú desplegable resultante.
Captura de pantalla que muestra cómo navegar hasta la pestaña de asignación de roles junto con la ubicación del botón usado para agregar asignaciones de roles a un grupo de recursos.
La página Agregar asignación de roles muestra todos los roles que se pueden asignar para el grupo de recursos.
  1. Use el cuadro de búsqueda para filtrar la lista a un tamaño más fácil de administrar. En este ejemplo se muestra cómo filtrar los roles de Storage Blob.
  2. Seleccione el rol que quiere asignar.
Seleccione Siguiente para ir a la pantalla siguiente.
Captura de pantalla que muestra cómo filtrar y seleccionar las asignaciones de roles que deben agregarse al grupo de recursos.
La siguiente página Agregar asignación de roles permite especificar a qué usuario se debe asignar el rol.
  1. Seleccione Usuario, grupo o entidad de servicio en Asignar acceso a.
  2. Seleccione + Seleccionar miembros en Miembros.
Se abrirá un cuadro de diálogo en el lado derecho de Azure Portal.
Captura de pantalla que muestra el botón de selección que debe usarse para asignar un rol a un grupo de Microsoft Entra y el vínculo usado para seleccionar el grupo al que se debe asignar el rol.
En el cuadro de diálogo Seleccionar miembros:
  1. El cuadro de texto Seleccionar se puede usar para filtrar la lista de usuarios y grupos de la suscripción. Si es necesario, escriba los primeros caracteres del grupo de desarrollo local de Microsoft Entra que creó para la aplicación.
  2. Seleccione el grupo de desarrollo local de Microsoft Entra asociado a la aplicación.
Seleccione Seleccionar en la parte inferior del cuadro de diálogo para continuar.
Captura de pantalla que muestra cómo filtrar y seleccionar el grupo de Microsoft Entra para la aplicación en el cuadro de diálogo Seleccionar miembros.
El grupo de Microsoft Entra se mostrará ahora como seleccionado en la pantalla Agregar asignación de roles. Seleccione Revisar y asignar para ir a la página final y, a continuación, Revisar y asignar de nuevo para completar el proceso. Captura de pantalla que muestra la página Agregar asignación de roles completada y la ubicación del botón Revisar y asignar que se usa para completar el proceso.

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.

  1. Vaya a Herramientas>Opciones para abrir el cuadro de diálogo de opciones.

  2. En el cuadro Opciones de búsqueda de la parte superior, escriba Azure para filtrar las opciones disponibles.

  3. En Autenticación de servicio de Azure, elija Selección de cuenta.

  4. 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.

    Captura de pantalla que muestra cómo iniciar sesión en Azure mediante Visual Studio.

  5. 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:

  1. Incluya los espacios de nombres Azure.Identity y Microsoft.Extensions.Azure mediante las directivas using.
  2. Registre el cliente de servicio de Azure mediante el método de extensión con el prefijo Add correspondiente.
  3. Pase una instancia del objeto DefaultAzureCredential al método UseCredential.

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.