Biblioteca cliente de Azure Identity para JavaScript: versión 4.5.0

La biblioteca de identidades de Azure proporciona de identificador de Microsoft Entra (anteriormente, la autenticación de tokens de Azure Active Directory) mediante un conjunto de implementaciones de token TokenCredential convenientes.

Para obtener ejemplos de varias credenciales, consulte la página de ejemplos de identidad de Azure .

Vínculos clave:

Empezar

Entornos admitidos actualmente

  • versiones ltS de Node.js
  • Versiones más recientes de Safari, Chrome, Edge y Firefox.
    • Nota: entre las distintas credenciales exportadas en esta biblioteca, InteractiveBrowserCredential es la única admitida en el explorador.

Para obtener más información, consulte nuestra directiva de soporte técnico de .

Instalación del paquete

Instale Azure Identity con npm:

npm install --save @azure/identity

Prerrequisitos

  • Una suscripción de Azure .
  • Opcional: el de la CLI de Azure o azure PowerShell también puede resultar útil para autenticarse en un entorno de desarrollo y administrar roles de cuenta.

Cuándo debe usarse @azure/identity

Las clases de credenciales expuestas por @azure/identity se centran en proporcionar la manera más sencilla de autenticar localmente a los clientes del SDK de Azure, en los entornos de desarrollo y en producción. El objetivo es simplificar y admitir razonablemente los protocolos de autenticación para cubrir la mayoría de los escenarios de autenticación posibles en Azure. Estamos expandiendo activamente para cubrir más escenarios. Para obtener una lista completa de las credenciales que se ofrecen, consulte la sección clases de credenciales de .

Todos los tipos de credenciales proporcionados por @azure/identity se admiten en Node.js. En el caso de los exploradores, InteractiveBrowserCredential es el tipo de credencial que se usará para escenarios de autenticación básicos.

La mayoría de los tipos de credenciales ofrecidos por @azure/identity usan la biblioteca de autenticación de Microsoft para JavaScript (MSAL.js). En concreto, usamos las bibliotecas de MSAL.js v2, que usan flujo de código de autorización de OAuth 2.0 con PKCE y son compatibles con OpenID. Aunque @azure/identity se centra en la simplicidad, las bibliotecas de MSAL.js, como @azure/msal-common, @azure/msal-node, y @azure/msal-browser, están diseñadas para proporcionar una sólida compatibilidad con los protocolos de autenticación compatibles con Azure.

Cuándo usar algo más

Los tipos de credenciales de @azure/identity son implementaciones de @azure/core-authclase TokenCredential. En principio, cualquier objeto con un método de getToken que satisfaga getToken(scopes: string | string[], options?: GetTokenOptions): Promise<AccessToken | null> funciona como un TokenCredential. Esto significa que los desarrolladores pueden escribir sus propios tipos de credenciales para admitir casos de autenticación no cubiertos por @azure/identity. Para más información, consulte credenciales personalizadas.

Aunque nuestros tipos de credenciales admiten muchos escenarios avanzados, es posible que los desarrolladores quieran usar Biblioteca de autenticación de Microsoft para JavaScript (MSAL.js) directamente. Considere la posibilidad de usar MSAL.js en los escenarios siguientes:

  • Los desarrolladores que desean el control total del protocolo de autenticación y su configuración.
  • Nuestros tipos de credenciales están diseñados para usarse con clientes de Azure SDK con almacenamiento en caché inteligente y actualización de tokens controladas en la capa HTTP principal. Si tiene que usar getToken directamente, puede beneficiarse del uso de MSAL.js para tener más control sobre el flujo de autenticación y el almacenamiento en caché de tokens.

Puede leer más a través de los vínculos siguientes:

Para flujos de trabajo de autenticación avanzada en el explorador, tenemos una sección en la que se muestra cómo usar la biblioteca de @azure/msal-browser directamente para autenticar clientes de Azure SDK.

Autenticación del cliente en el entorno de desarrollo

Aunque se recomienda usar la identidad administrada en la aplicación hospedada en Azure, es habitual que un desarrollador use su propia cuenta para autenticar llamadas a los servicios de Azure al depurar y ejecutar código localmente. Hay varias herramientas de desarrollo que se pueden usar para realizar esta autenticación en el entorno de desarrollo.

Autenticación mediante la CLI para desarrolladores de Azure

Los desarrolladores que codifican fuera de un IDE también pueden usar el de la CLI para desarrolladores de Azure para autenticarse. Las aplicaciones que usan el DefaultAzureCredential o el AzureDeveloperCliCredential pueden usar esta cuenta para autenticar las llamadas en su aplicación cuando se ejecutan localmente.

Para autenticarse con elde la CLI para desarrolladores de Azure , los usuarios pueden ejecutar el comando . Para los usuarios que se ejecutan en un sistema con un explorador web predeterminado, la CLI para desarrolladores de Azure inicia el explorador para autenticar al usuario.

En el caso de los sistemas sin un explorador web predeterminado, el comando azd auth login --use-device-code usa el flujo de autenticación de código de dispositivo.

Autenticación mediante la CLI de Azure

Las aplicaciones que usan el AzureCliCredential, ya sea directamente o a través del DefaultAzureCredential, pueden usar la cuenta de la CLI de Azure para autenticar las llamadas en la aplicación cuando se ejecutan localmente.

Para autenticarse con la CLI de Azure , ejecute el comando az login. Para los usuarios que se ejecutan en un sistema con un explorador web predeterminado, la CLI de Azure inicia el explorador para autenticar al usuario.

inicio de sesión de la cuenta de la CLI de Azure

En el caso de los sistemas sin un explorador web predeterminado, el comando az login usa el flujo de autenticación de código de dispositivo. El usuario también puede forzar a la CLI de Azure a usar el flujo de código del dispositivo en lugar de iniciar un explorador especificando el argumento --use-device-code.

inicio de sesión del código de dispositivo de la CLI de Azure

Autenticación mediante Azure PowerShell

Las aplicaciones que usan el AzurePowerShellCredential, ya sea directamente o a través del DefaultAzureCredential, pueden usar la cuenta conectada a Azure PowerShell para autenticar las llamadas en la aplicación cuando se ejecutan localmente.

Para autenticarse con azure PowerShell, ejecute el cmdlet Connect-AzAccount. De forma predeterminada, como la CLI de Azure, Connect-AzAccount inicia el explorador web predeterminado para autenticar una cuenta de usuario.

inicio de sesión de la cuenta de Azure PowerShell

Si no se puede admitir la autenticación interactiva en la sesión, el argumento -UseDeviceAuthentication obliga al cmdlet a usar un flujo de autenticación de código de dispositivo en su lugar, similar a la opción correspondiente en la credencial de la CLI de Azure.

Autenticación mediante Visual Studio Code

Los desarrolladores que usan Visual Studio Code pueden usar la extensión de cuenta de Azure para autenticarse a través del editor. Las aplicaciones que usan VisualStudioCodeCredential pueden usar esta cuenta para autenticar las llamadas en su aplicación cuando se ejecutan localmente.

Para autenticarse en Visual Studio Code, asegúrese de que la extensión de cuenta de Azure esté instalada. Una vez instalado, abra el paleta de comandos de y ejecute el comando Azure: Iniciar sesión.

Además, use el paquete del complemento @azure/identity-vscode. Este paquete proporciona las dependencias de VisualStudioCodeCredential y lo habilita. Consulte complementos de .

Se trata de un problema conocido que VisualStudioCodeCredential no funciona con extensión de cuenta de Azure versiones más recientes que 0.9.11. Hay una corrección a largo plazo para este problema. Mientras tanto, considere la posibilidad de autenticarse a través de la CLI de Azure.

Autenticación del cliente en exploradores

Para autenticar clientes de Azure SDK en exploradores web, ofrecemos el InteractiveBrowserCredential, que se puede establecer para usar el redireccionamiento o elementos emergentes para completar el flujo de autenticación. Es necesario crear primero una de registro de aplicaciones de Azure en Azure Portal para la aplicación web.

Conceptos clave

Si es la primera vez que usa @azure/identity o id. de Microsoft Entra, lea Using @azure/identity with Microsoft Entra ID (Uso de @azure/identity con el identificador de Entra de Microsoft primero). En este documento se proporciona una comprensión más profunda de la plataforma y cómo configurar la cuenta de Azure correctamente.

Credenciales

Una credencial es una clase que contiene o puede obtener los datos necesarios para que un cliente del servicio autentique las solicitudes. Los clientes de servicio en el SDK de Azure aceptan credenciales cuando se construyen. Los clientes de servicio usan esas credenciales para autenticar las solicitudes en el servicio.

La biblioteca de identidades de Azure se centra en la autenticación de OAuth con el identificador de Microsoft Entra y ofrece varias clases de credenciales capaces de adquirir un token de Microsoft Entra para autenticar las solicitudes de servicio. Todas las clases de credenciales de esta biblioteca son implementaciones de la TokenCredential clase abstracta, y cualquiera de ellas se puede usar para construir clientes de servicio capaces de autenticarse con un TokenCredential.

Consulte clases de credenciales .

DefaultAzureCredential

DefaultAzureCredential simplifica la autenticación al desarrollar aplicaciones que se implementan en Azure mediante la combinación de credenciales usadas en entornos de hospedaje de Azure con credenciales usadas en el desarrollo local. Para obtener más información, consulte Información general sobre DefaultAzureCredential.

Directiva de continuación

A partir de la versión 3.3.0, DefaultAzureCredential intenta autenticarse con todas las credenciales de desarrollador hasta que se realice correctamente, independientemente de los errores que experimentaron las credenciales anteriores del desarrollador. Por ejemplo, una credencial de desarrollador puede intentar obtener un token y producir un error, por lo que DefaultAzureCredential continúa con la siguiente credencial del flujo. Las credenciales de servicio implementadas detienen el flujo con una excepción iniciada si pueden intentar recuperar tokens, pero no reciben una.

Esto permite probar todas las credenciales de desarrollador en la máquina mientras tiene un comportamiento predecible implementado.

Nota sobre VisualStudioCodeCredential

Debido a un problema conocido , VisualStudioCodeCredential se ha quitado de la cadena de tokens de DefaultAzureCredential. Cuando el problema se resuelva en una versión futura, este cambio se revertirá.

Complementos

Azure Identity para JavaScript proporciona una API de complemento que nos permite proporcionar cierta funcionalidad a través de paquetes de complementos de independientes. El paquete @azure/identity exporta una función de nivel superior (useIdentityPlugin) que se puede usar para habilitar un complemento. Proporcionamos dos paquetes de complementos:

  • @azure/identity-broker, que proporciona compatibilidad con la autenticación asincrónica a través de un agente nativo, como el Administrador de cuentas web.
  • @azure/identity-cache-persistence, que proporciona almacenamiento en caché de tokens persistente en Node.js mediante un sistema de almacenamiento seguro nativo proporcionado por el sistema operativo. Este complemento permite que los valores de access_token almacenados en caché se conserven entre sesiones, lo que significa que no es necesario repetir un flujo de inicio de sesión interactivo siempre que haya disponible un token almacenado en caché.

Ejemplos

Puede encontrar más ejemplos de uso de varias credenciales en página de ejemplos de identidad de Azure

Autenticación con DefaultAzureCredential

En este ejemplo se muestra cómo autenticar el KeyClient desde la biblioteca cliente de @azure/keyvault-keys mediante DefaultAzureCredential.

import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";

// Configure vault URL
const vaultUrl = "https://<your-unique-keyvault-name>.vault.azure.net";
// Azure SDK clients accept the credential as a parameter
const credential = new DefaultAzureCredential();
// Create authenticated client
const client = new KeyClient(vaultUrl, credential);

Especificar una identidad administrada asignada por el usuario con DefaultAzureCredential

Un escenario relativamente común implica la autenticación mediante una identidad administrada asignada por el usuario para un recurso de Azure. Explore el ejemplo de autenticación de una identidad administrada asignada por el usuario con DefaultAzureCredential para ver cómo se hace una tarea relativamente sencilla que se puede configurar mediante variables de entorno o en código.

Definición de un flujo de autenticación personalizado con ChainedTokenCredential

Aunque DefaultAzureCredential suele ser la manera más rápida de empezar a desarrollar aplicaciones para Azure, es posible que los usuarios más avanzados quieran personalizar las credenciales que se consideran al autenticarse. El ChainedTokenCredential permite a los usuarios combinar varias instancias de credenciales para definir una cadena personalizada de credenciales. En este ejemplo se muestra cómo crear un ChainedTokenCredential que intenta autenticarse mediante dos instancias configuradas de forma diferente de ClientSecretCredential, para autenticar el KeyClient desde la @azure/keyvault-keys:

import { ClientSecretCredential, ChainedTokenCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";

// Configure variables
const vaultUrl = "https://<your-unique-keyvault-name>.vault.azure.net";
const tenantId = "<tenant-id>";
const clientId = "<client-id>";
const clientSecret = "<client-secret>";
const anotherClientId = "<another-client-id>";
const anotherSecret = "<another-client-secret>";
// When an access token is requested, the chain will try each
// credential in order, stopping when one provides a token
const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);
const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);
// The chain can be used anywhere a credential is required
const client = new KeyClient(vaultUrl, credentialChain);

Compatibilidad con identidades administradas

El de autenticación de identidad administrada de se admite a través del o las clases de credenciales de directamente para los siguientes servicios de Azure:

Para obtener ejemplos de cómo usar la identidad administrada para la autenticación, consulte los ejemplos.

Configuración de la nube

Las credenciales se autentican de forma predeterminada en el punto de conexión de Microsoft Entra para la nube pública de Azure. Para acceder a los recursos de otras nubes, como Azure Government o una nube privada, configure las credenciales con el argumento authorityHost en el constructor. La enumeración AzureAuthorityHosts define autoridades para nubes conocidas. Para la nube de la Administración Pública de EE. UU., podría crear instancias de una credencial de esta manera:

import { ClientSecretCredential, AzureAuthorityHosts } from "@azure/identity";

const credential = new ClientSecretCredential(
  "<YOUR_TENANT_ID>",
  "<YOUR_CLIENT_ID>",
  "<YOUR_CLIENT_SECRET>",
  {
    authorityHost: AzureAuthorityHosts.AzureGovernment,
  },
);

Como alternativa a especificar el argumento authorityHost, también puede establecer la variable de entorno AZURE_AUTHORITY_HOST en la dirección URL de la autoridad de la nube. Este enfoque es útil al configurar varias credenciales para autenticarse en la misma nube o cuando el entorno implementado necesita definir la nube de destino:

AZURE_AUTHORITY_HOST=https://login.partner.microsoftonline.cn

La enumeración AzureAuthorityHosts define autoridades para nubes conocidas para su comodidad; Sin embargo, si la autoridad de la nube no aparece en AzureAuthorityHosts, puede pasar cualquier dirección URL de autoridad válida como argumento de cadena. Por ejemplo:

import { ClientSecretCredential } from "@azure/identity";

const credential = new ClientSecretCredential(
  "<YOUR_TENANT_ID>",
  "<YOUR_CLIENT_ID>",
  "<YOUR_CLIENT_SECRET>",
  {
    authorityHost: "https://login.partner.microsoftonline.cn",
  },
);

No todas las credenciales requieren esta configuración. Las credenciales que se autentican a través de una herramienta de desarrollo, como AzureCliCredential, usan la configuración de esa herramienta. Del mismo modo, VisualStudioCodeCredential acepta un argumento de authorityHost, pero el valor predeterminado es la authorityHost que coincide con la configuración de Azure: Cloud de Visual Studio Code.

Clases de credenciales

Cadenas de credenciales

Credencial Uso Ejemplo
DefaultAzureCredential Proporciona una experiencia de autenticación simplificada para empezar a desarrollar rápidamente aplicaciones que se ejecutan en Azure. ejemplo
ChainedTokenCredential Permite a los usuarios definir flujos de autenticación personalizados que componen varias credenciales. ejemplo

Autenticación de aplicaciones hospedadas en Azure

Credencial Uso Ejemplo
EnvironmentCredential Autentica una entidad de servicio o un usuario a través de la información de credenciales especificada en las variables de entorno. ejemplo
ManagedIdentityCredential Autentica la identidad administrada de un recurso de Azure. ejemplo
WorkloadIdentityCredential Admite identificador de carga de trabajo de Microsoft Entra en Kubernetes. ejemplo

Autenticación de entidades de servicio

Credencial Uso Ejemplo Referencia
AzurePipelinesCredential Admite identificador de carga de trabajo de Microsoft Entra en Azure Pipelines. ejemplo
ClientAssertionCredential Autentica una entidad de servicio mediante una aserción de cliente firmada. ejemplo de autenticación de entidad de servicio
ClientCertificateCredential Autentica una entidad de servicio mediante un certificado. ejemplo de autenticación de entidad de servicio
ClientSecretCredential Autentica una entidad de servicio mediante un secreto. ejemplo de autenticación de entidad de servicio

Autenticación de usuarios

Credencial Uso Ejemplo Referencia
AuthorizationCodeCredential Autentica a un usuario con un código de autorización obtenido previamente. ejemplo código de autenticación de OAuth2
DeviceCodeCredential Autentica interactivamente a un usuario en dispositivos con una interfaz de usuario limitada. ejemplo de autenticación de código de dispositivo
InteractiveBrowserCredential Autentica interactivamente a un usuario con el explorador del sistema predeterminado. Obtenga más información sobre cómo sucede esto aquí. ejemplo código de autenticación de OAuth2
OnBehalfOfCredential Propaga la identidad de usuario delegada y los permisos a través de la cadena de solicitudes. de autenticación en nombre de
UsernamePasswordCredential Autentica a un usuario con un nombre de usuario y una contraseña. ejemplo nombre de usuario y autenticación de contraseñas

Autenticación mediante herramientas de desarrollo

Credencial Uso Ejemplo Referencia
AzureCliCredential Autentíquese en un entorno de desarrollo con la CLI de Azure. ejemplo de autenticación de la CLI de Azure
AzureDeveloperCliCredential Autentíquese en un entorno de desarrollo con el usuario habilitado o la entidad de servicio en la CLI para desarrolladores de Azure. referencia de la CLI para desarrolladores de Azure
AzurePowerShellCredential Autentíquese en un entorno de desarrollo mediante Azure PowerShell. ejemplo de autenticación de Azure PowerShell
VisualStudioCodeCredential Se autentica como el usuario que inició sesión en la extensión de la cuenta de Azure de Visual Studio Code. extensión de cuenta de Azure de VS Code

Variables de entorno

DefaultAzureCredential y EnvironmentCredential se pueden configurar con variables de entorno. Cada tipo de autenticación requiere valores para variables específicas.

Entidad de servicio con secreto

Nombre de variable Valor
AZURE_CLIENT_ID Identificador de una aplicación de Microsoft Entra
AZURE_TENANT_ID Identificador del inquilino de Microsoft Entra de la aplicación
AZURE_CLIENT_SECRET uno de los secretos de cliente de la aplicación

Entidad de servicio con certificado

Nombre de variable Valor
AZURE_CLIENT_ID Identificador de una aplicación de Microsoft Entra
AZURE_TENANT_ID Identificador del inquilino de Microsoft Entra de la aplicación
AZURE_CLIENT_CERTIFICATE_PATH ruta de acceso a un archivo de certificado codificado en PEM, incluida la clave privada
AZURE_CLIENT_CERTIFICATE_PASSWORD (opcional) contraseña del archivo de certificado, si existe
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN (opcional) enviar cadena de certificados en el encabezado x5c para admitir la autenticación basada en emisor o nombre del firmante

Nombre de usuario y contraseña

Nombre de variable Valor
AZURE_CLIENT_ID Identificador de una aplicación de Microsoft Entra
AZURE_TENANT_ID Identificador del inquilino de Microsoft Entra de la aplicación
AZURE_USERNAME un nombre de usuario (normalmente una dirección de correo electrónico)
AZURE_PASSWORD contraseña de ese usuario

La configuración se intenta en el orden anterior. Por ejemplo, si los valores del secreto de cliente y el certificado están presentes, se utiliza el secreto de cliente.

Evaluación continua del acceso

A partir de la versión 3.3.0, es posible acceder a los recursos protegidos por evaluación continua de acceso (CAE) por solicitud. Esto se puede habilitar mediante la API de GetTokenOptions.enableCae(boolean). CAE no es compatible con las credenciales de desarrollador.

Almacenamiento en caché de tokens

El almacenamiento en caché de tokens es una característica proporcionada por la biblioteca de identidades de Azure que permite a las aplicaciones:

  • Caché de tokens en memoria (valor predeterminado) y en disco (participación).
  • Mejorar la resistencia y el rendimiento.
  • Reduzca el número de solicitudes realizadas a Microsoft Entra ID para obtener tokens de acceso.

La biblioteca de identidades de Azure ofrece almacenamiento en caché de disco persistente y en memoria. Para obtener más información, consulte la documentación de almacenamiento en caché de tokens de .

Autenticación asincrónica

Un agente de autenticación es una aplicación que se ejecuta en la máquina de un usuario y administra los protocolos de enlace de autenticación y el mantenimiento de tokens para las cuentas conectadas. Actualmente, solo se admite el Administrador de cuentas web de Windows (WAM). Para habilitar la compatibilidad, use el paquete @azure/identity-broker. Para más información sobre la autenticación mediante WAM, consulte la documentación del complemento de agente de .

Solución de problemas

Para obtener ayuda con la solución de problemas, consulte la guía de solución de problemas de .

Pasos siguientes

Lea la documentación.

Puede encontrar documentación de API para esta biblioteca en nuestro sitio de documentación de .

Compatibilidad con la biblioteca cliente

Las bibliotecas de administración y cliente que aparecen en la página de versiones del SDK de Azure de que admiten la autenticación de Microsoft Entra aceptan credenciales de esta biblioteca. Obtenga más información sobre el uso de estas bibliotecas en su documentación, que está vinculada desde la página de versiones.

Problemas conocidos

Compatibilidad con Azure AD B2C

Esta biblioteca no admite el servicio de azure AD B2C.

Para ver otros problemas abiertos, consulte el repositorio de GitHub de la biblioteca.

Proporcionar comentarios

Si encuentra errores o tiene sugerencias, abrir un problema.

Contribuyendo

Para contribuir a esta biblioteca, lea la guía de contribución de para obtener más información sobre cómo compilar y probar el código.

impresiones