Compartir a través de


Autenticación de aplicaciones javaScript en servicios de Azure mediante la biblioteca de identidades de Azure

Cuando una aplicación necesita acceder a un recurso de Azure, como Storage, Key Vault o Cognitive Services, la aplicación debe autenticarse en Azure. Esto es cierto para todas las aplicaciones, ya sea implementadas en Azure, implementadas de forma local o en desarrollo en una estación de trabajo de desarrollador local. En este artículo se describen los enfoques recomendados para autenticar una aplicación en Azure al usar El SDK de Azure para JavaScript.

El enfoque recomendado es hacer que las aplicaciones usen autenticación basada en tokens, en lugar de cadenas de conexión o claves, al autenticarse en recursos de Azure. La biblioteca de identidades de Azure proporciona autenticación basada en tokens y permite a las aplicaciones autenticarse sin problemas en los recursos de Azure, tanto si la aplicación está en desarrollo local, se implementa en Azure o se implementa en un servidor local.

El tipo específico de autenticación basada en tokens que una aplicación debe usar para autenticarse en los recursos de Azure depende de dónde se ejecuta la aplicación y se muestra en el diagrama siguiente.

Medio ambiente Autenticación
Local Cuando un desarrollador ejecuta una aplicación durante el desarrollo local: la aplicación puede autenticarse en Azure mediante una entidad de servicio de aplicación para el desarrollo local o mediante las credenciales de Azure del desarrollador. Cada una de estas opciones se describe con más detalle en la sección autenticación durante el desarrollo local.
Azure Cuando una aplicación se hospeda en Azure: la aplicación debe autenticarse en los recursos de Azure mediante una identidad administrada. Esta opción se describe con más detalle a continuación en la sección autenticación en entornos de servidor.
Configuración local Cuando una aplicación se hospeda e implementa de forma local: la aplicación debe autenticarse en los recursos de Azure mediante una entidad de servicio de aplicación. Esta opción se describe con más detalle a continuación en la sección autenticación en entornos de servidor.

Diagrama en el que se muestran las estrategias de autenticación recomendadas basadas en tokens para una aplicación en función de dónde se ejecute.

Ventajas de la autenticación basada en tokens

Al desarrollar aplicaciones para Azure, se recomienda encarecidamente la autenticación basada en tokens en lugar de secretos (cadenas de conexión o claves). La autenticación basada en tokens se proporciona con DefaultAzureCredential.

Autenticación basada en tokens Secretos (cadenas de conexión y claves)
principio de privilegios mínimos, establezca los permisos específicos necesarios para la aplicación en el recurso de Azure. Una cadena de conexión o clave concede derechos completos al recurso de Azure.
No hay ningún secreto de aplicación que almacenar. Debe almacenar y rotar secretos en la configuración de la aplicación o la variable de entorno.
La biblioteca de identidades de Azure administra los tokens automáticamente en segundo plano. Esto hace que el uso de la autenticación basada en tokens sea tan fácil de usar como una cadena de conexión. Los secretos no se administran.

El uso de cadenas de conexión debe limitarse a la prueba inicial de aplicaciones de concepto o prototipos de desarrollo que no tienen acceso a la producción ni a los datos confidenciales. De lo contrario, las clases de autenticación basadas en tokens disponibles en la biblioteca de identidades de Azure siempre deben preferirse al autenticarse en los recursos de Azure.

Use la biblioteca siguiente:

DefaultAzureCredential

La clase DefaultAzureCredential proporcionada por la biblioteca de identidades de Azure permite a las aplicaciones usar diferentes métodos de autenticación en función del entorno en el que se ejecutan. Este comportamiento permite que las aplicaciones se promuevan desde el desarrollo local para probar entornos a producción sin cambios en el código. Configure el método de autenticación adecuado para cada entorno y DefaultAzureCredential detectará y usará automáticamente ese método de autenticación. El uso de DefaultAzureCredential debe preferirse sobre la codificación manual de la lógica condicional o las marcas de características para usar diferentes métodos de autenticación en distintos entornos.

Los detalles sobre el uso de DefaultAzureCredential se tratan en Uso de DefaultAzureCredential en una aplicación.

Autenticación en entornos de servidor

Al hospedar en un entorno de servidor, a cada aplicación se le debe asignar una identidad de aplicación única por entorno. En Azure, una identidad de aplicación se representa mediante una entidad de servicio , un tipo especial de entidad de seguridad de diseñada para identificar y autenticar aplicaciones en Azure. El tipo de entidad de servicio que se va a usar para la aplicación depende de dónde se esté ejecutando la aplicación.

Autenticación durante el desarrollo local

Cuando una aplicación se ejecuta en la estación de trabajo de un desarrollador durante el desarrollo local, el entorno local todavía debe autenticarse en los servicios de Azure usados por la aplicación.

Uso de DefaultAzureCredential en una aplicación

DefaultAzureCredential es una secuencia ordenada de mecanismos para autenticarse en Microsoft Entra ID. Cada mecanismo de autenticación es una clase que se deriva 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 realizar la siguiente credencial de la secuencia, etc., hasta que se obtenga correctamente un token de acceso. De este modo, la aplicación puede usar credenciales diferentes en distintos entornos sin escribir código específico del entorno.

Para usar DefaultAzureCredential, agregue el paquete @azure/identity a tu aplicación.

npm install @azure/identity

A continuación, el siguiente ejemplo de código muestra cómo crear instancias de un objeto DefaultAzureCredential y usarlo con una clase cliente de servicio de Azure SDK, en este caso, un BlobServiceClient usado para acceder a Azure Blob Storage.

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()
);

DefaultAzureCredential detectará automáticamente el mecanismo de autenticación configurado para la aplicación y obtendrá los tokens necesarios para autenticar la aplicación en Azure. Si una aplicación usa más de un cliente del SDK, se puede usar el mismo objeto de credencial con cada objeto cliente del SDK.