Compartir a través de


Cadenas de credenciales en la biblioteca cliente de Identidad de Azure para JavaScript

La biblioteca cliente de identidades de Azure incluye credenciales, que son clases públicas que implementan la interfaz TokenCredential de la biblioteca de Azure Core. Una credencial representa un flujo de autenticación distinto para adquirir un token de acceso de Microsoft Entra ID. Estas credenciales se pueden seleccionar individualmente o encadenar juntas para formar una secuencia ordenada de mecanismos de autenticación que se van a intentar.

  • Las credenciales individuales proporcionan velocidad y certeza. Si se produce un error, sabe que la credencial no se ha autenticado.
  • Las cadenas proporcionan reservas. Cuando la credencial no se puede autenticar, se intenta la siguiente credencial de la cadena.

Diseño de los flujos de autenticación

Cuando se usan bibliotecas cliente del SDK de Azure, el primer paso es autenticarse en Azure. Hay muchas opciones de cómo autenticarse, como herramientas e IDE que se usan en el equipo de desarrollo, flujos de trabajo de automatización, como pruebas y CI/CD, y plataformas de hospedaje como Azure App Service.

Elija entre las siguientes progresiones comunes para el flujo de autenticación:

  • Use el DefaultAzureCredential para los equipos de cuyos desarrolladores usan varios IDE y CLIs para autenticarse en Azure. Esto permite la mayor flexibilidad. Esta flexibilidad se proporciona a expensas del rendimiento para validar las credenciales de la cadena hasta que una tenga éxito.

    • Las reservas entre credenciales se realiza en su nombre según el entorno detectado.
    • Para determinar qué credencial se seleccionó, active la depuración.
  • Use ChainedTokenCredential para los equipos de que tienen una selección estricta y definida de herramientas. Por ejemplo, todos se autentican en y usan el mismo IDE o CLI. Esto permite al equipo seleccionar las credenciales exactas y el orden que todavía proporciona flexibilidad, pero con un costo de rendimiento reducido.

    • Seleccione la ruta de acceso de reserva entre credenciales, independientemente del entorno en el que se ejecute.
    • Para determinar qué credencial se seleccionó, active la depuración.
  • Para equipos con credenciales verificadas en todos los entornos, una sentencia de control de flujo como if/else le permite saber qué credencial se eligió en cada entorno.

    • No hay ninguna alternativa para otra tipo de credencial.
    • No es necesario depurar para determinar qué credencial se eligió porque la credencial ya se especificó.

Funcionamiento de una credencial encadenada

En tiempo de ejecución, una cadena de credenciales intenta autenticarse mediante la primera credencial de la secuencia. 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. En el diagrama de secuencia siguiente se muestra este comportamiento:

Diagrama que muestra el flujo de secuencia de credenciales de identidad de Azure.

Uso de DefaultAzureCredential para la flexibilidad

DefaultAzureCredential es una cadena preconfigurada de credenciales fundamentada. Está diseñado para admitir muchos entornos, junto con los flujos de autenticación y las herramientas de desarrollo más comunes. En forma gráfica, la cadena subyacente tiene este aspecto:

Diagrama que muestra el flujo de autenticación DefaultAzureCredential.

Orden en el que DefaultAzureCredential intenta las credenciales.

compra Credential: Descripción
1 Entorno Lee una colección de las variables de entorno para determinar si una entidad de servicio principal de la aplicación (usuario de aplicación) está configurada para la aplicación. Si es así, DefaultAzureCredential usa estos valores para autenticar la aplicación en Azure. Este método se usa con más frecuencia en entornos de servidor, pero también se puede usar al desarrollar localmente.
2 Identidad de carga de trabajo Si la aplicación se implementa en un host de Azure con la identidad de carga de trabajo habilitada, autentíquela.
3 Identidad Administrada Si la aplicación se implementa en un host de Azure con identidad administrada habilitada, autentíquela en Azure mediante esa identidad administrada.
4 CLI de Azure Si el desarrollador se autentica en Azure mediante el comando az login de la CLI de Azure, autentíquela en Azure con esa misma cuenta.
5 Azure PowerShell Si el desarrollador se autentica en Azure mediante el cmdlet Connect-AzAccount de Azure PowerShell, autentique la aplicación en Azure con esa misma cuenta.
6 CLI para desarrolladores de Azure Si el desarrollador se autentica en Azure mediante el comando azd auth login de la CLI para desarrolladores de Azure, autentíquese con esa cuenta.

En su forma más sencilla, puede usar la versión sin parámetros de DefaultAzureCredential de la siguiente manera:

import { DefaultAzureCredential } from "@azure/identity";
import { BlobServiceClient } from "@azure/storage-blob";

// Acquire a credential object
const credential = new DefaultAzureCredential();

const blobServiceClient = new BlobServiceClient(
    "https://<my_account_name>.blob.core.windows.net",
    credential
);

Las credenciales son globales para el entorno

DefaultAzureCredential comprueba la presencia de determinadas variables de entorno . Es posible que alguien pueda agregar o modificar estas variables de entorno en el nivel de sistema en el equipo host. Esos cambios se aplican globalmente y, por tanto, modifican el comportamiento de DefaultAzureCredential en tiempo de ejecución en cualquier aplicación que se ejecute en esa máquina.

Uso de ChainedTokenCredential para granularidad

ChainedTokenCredential es una cadena vacía a la que agregas credenciales para satisfacer las necesidades de la aplicación. Por ejemplo, en el ejemplo siguiente se agrega una instancia de ManagedIdentityCredential y, a continuación, una instancia de AzureCliCredential.

import { 
    ChainedTokenCredential, 
    ManagedIdentityCredential, 
    AzureCliCredential 
} from "@azure/identity";

const credential = ChainedTokenCredential(
    ManagedIdentityCredential({ clientId: "<YOUR_CLIENT_ID>" }),
    AzureCliCredential()
);

El ejemplo de código anterior crea una cadena de credenciales adaptada formada por dos credenciales. Primero se intenta la variante de identidad administrada asignada por el usuario de ManagedIdentityCredential, seguida de AzureCliCredential, si es necesario. En forma gráfica, la cadena tiene el siguiente aspecto:

Diagrama en el que se muestra la cadena de credenciales de identidad de Azure para la identidad administrada y la CLI de Azure.

Sugerencia

Para mejorar el rendimiento, optimice la disposición de las credenciales para su entorno de producción . Las credenciales diseñadas para su uso en el entorno de desarrollo local deben agregarse en último lugar.

Depuración de una credencial encadenada

Para depurar una cadena de credenciales, habilite el Registro del SDK de Azure.

Más recursos