Autenticación en recursos de Azure desde aplicaciones JavaScript locales

Las aplicaciones que se ejecutan fuera de Azure (por ejemplo, en el entorno local o en un centro de datos de terceros) deben usar una entidad de servicio de aplicación para autenticarse en Azure al acceder a los recursos de Azure. Los objetos de entidad de servicio de aplicación se crean mediante el proceso de registro de aplicaciones en Azure. Cuando se crea una entidad de servicio de aplicación, se genera un identificador de cliente y un secreto de cliente para la aplicación. El identificador de cliente, el secreto de cliente y el identificador de inquilino se almacenan en variables de entorno para que el SDK de Azure para JavaScript use las variables de entorno para autenticar la aplicación en Azure en tiempo de ejecución.

Se debe crear un registro de aplicación diferente para cada entorno (como prueba, fase, producción) en el que se ejecuta la aplicación. Esto permite configurar permisos de recursos específicos del entorno para cada entidad de servicio y asegurarse de que una aplicación implementada en un entorno no se comunique con los recursos de Azure que forman parte de otro entorno.

1: Registro de la aplicación en Azure AD

Una aplicación se puede registrar en Azure mediante Azure Portal o la CLI de Azure.

Inicie sesión en Azure Portal y siga los pasos siguientes.

Instrucciones Instantánea
En el Portal de Azure:
  1. Escriba registros de aplicación en la barra de búsqueda de la parte superior de Azure Portal.
  2. Seleccione el elemento con la etiqueta Registros de aplicaciones bajo el encabezado Servicios, en el menú que aparece bajo la barra de búsqueda.
Captura de pantalla que muestra cómo usar la barra de búsqueda de la parte superior en Azure Portal para localizar la página de registros de aplicaciones y navegar hasta ella.
En la página Registros de aplicaciones, seleccione + Nuevo registro. Captura de pantalla que muestra la ubicación del botón Nuevo registro en la página Registros de aplicaciones.
En la página Registrar una aplicación, rellene el formulario como se indica a continuación.
  1. Nombre → Escriba un nombre para el registro de la aplicación en Azure. Se recomienda que este nombre incluya el nombre de la aplicación y el entorno (prueba, producción) para el que se realiza el registro de la aplicación.
  2. Tipos de cuenta admitidosSolo las cuentas de este directorio organizativo.
Seleccione Registrar para registrar la aplicación y crear la entidad de servicio de la aplicación.
Una captura de pantalla para rellenar Registro asignando un nombre a la aplicación y especificando los tipos de cuenta admitidos como cuentas solo en este directorio de la organización.
En la página Registro de aplicaciones de la aplicación:
  1. ID de aplicación (cliente) → Este es el identificador de aplicación que la aplicación usará para acceder a Azure durante el desarrollo local. Copie este valor en una ubicación temporal en un editor de texto, ya que lo necesitará en un paso futuro.
  2. ID de directorio (inquilino) → La aplicación también necesitará este valor cuando se autentique en Azure. Copie este valor en una ubicación temporal en un editor de texto, ya que también lo necesitará en un paso futuro.
  3. Credenciales de cliente → Debe establecer las credenciales de cliente para la aplicación antes de que la aplicación pueda autenticarse en Azure y usar los servicios de Azure. Seleccione Agregar un certificado o un secreto para agregar credenciales para la aplicación.
Captura de pantalla del registro de la aplicación después de la finalización. En esta captura de pantalla se muestran los identificadores de aplicación e inquilino, que se necesitarán en un paso futuro.
En la página Certificados y secretos, seleccione + Nuevo secreto de cliente. Captura de pantalla que muestra la ubicación del vínculo que debe usarse para crear un nuevo secreto de cliente en la página de certificados y secretos.
Aparecerá el cuadro de diálogo Agregar un secreto de cliente desde el lado derecho de la página. En este cuadro de diálogo:
  1. Descripción → Escriba un valor de Actual.
  2. Expira → Seleccione un valor de 24 meses.
Seleccione Agregar para agregar el secreto.

IMPORTANTE: Establezca un aviso en el calendario antes de la fecha de expiración del secreto. De este modo, puede agregar un nuevo secreto antes y actualizar las aplicaciones antes de la expiración de este secreto y evitar una interrupción del servicio en la aplicación.
Captura de pantalla que muestra la página a la que se agrega el nuevo secreto de cliente para la entidad de servicio que creó el proceso de registro de la aplicación.
La página Certificados y secretos muestra el valor del secreto de cliente.

Copie este valor en una ubicación temporal en un editor de texto, ya que lo necesitará en un paso futuro.

IMPORTANTE: Esta es la única vez que verá este valor. Una vez que deje o actualice esta página, no podrá volver a ver este valor. Puede agregar otro secreto de cliente sin invalidar este secreto de cliente, pero no volverá a ver este valor.
Captura de pantalla que muestra la página con el secreto de cliente generado.

2: Asignación de roles a la entidad de servicio de la aplicación

A continuación, debe determinar qué roles (permisos) necesita la aplicación y en qué recursos y asignar dichos roles a la aplicación. Los roles 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 a la entidad de servicio 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 el cuadro de búsqueda superior de Azure Portal para localizar y navegar hasta el grupo de recursos al que desea asignar roles (permisos).
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 de la entidad de servicio que creó para que la aplicación filtre la lista.
  2. Seleccione la entidad de servicio asociada 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.
La entidad de servicio se muestra como seleccionada 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: Configuración de variables de entorno para la aplicación

Debe establecer las variables de entorno AZURE_CLIENT_ID, AZURE_TENANT_ID y AZURE_CLIENT_SECRET para el proceso que ejecuta la aplicación de JavaScript para que las credenciales de la entidad de servicio de la aplicación estén disponibles para la aplicación en tiempo de ejecución. El objeto DefaultAzureCredential busca la información de la entidad de servicio en estas variables de entorno.

AZURE_CLIENT_ID=<value>
AZURE_TENANT_ID=<value>
AZURE_CLIENT_SECRET=<value>

4: Implementación de DefaultAzureCredential en su aplicación

Para autenticar objetos de cliente del SDK de Azure en Azure, la aplicación debe usar la clase DefaultAzureCredential del paquete @azure/identity.

Primero, agregue el paquete @azure/identity a la aplicación.

npm install @azure/identity

A continuación, para cualquier código JavaScript que cree un objeto de cliente del SDK de Azure en la aplicación, querrá:

  1. Importar la clase DefaultAzureCredential desde el módulo @azure/identity.
  2. Crear un objeto DefaultAzureCredential.
  3. Pasar el objeto DefaultAzureCredential al constructor de objetos de cliente del SDK de Azure.

En el segmento de código siguiente se muestra un ejemplo de esto.

// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);

Cuando el código anterior crea una instancia del objeto DefaultAzureCredential, DefaultAzureCredential lee las variables de entorno AZURE_SUBSCRIPTION_ID, AZURE_TENANT_ID, AZURE_CLIENT_ID y AZURE_CLIENT_SECRET para que la información de la entidad de servicio de la aplicación se conecte a Azure.