Compartir a través de


Complemento de identidad de Azure para la autenticación asincrónica

Este paquete proporciona un complemento a la biblioteca de identidades de Azure para JavaScript (@azure/identity) que permite usar un agente de autenticación, como WAM.

Un agente de autenticación es una aplicación que se ejecuta en la máquina de un usuario que administra los protocolos de enlace de autenticación y el mantenimiento de tokens para las cuentas conectadas. Actualmente, solo se admite el agente de autenticación de Windows, el Administrador de cuentas web (WAM).

documentación de referencia de la API decódigo fuente | [Documentación de Microsoft Entra ID] ()

Empezar

import { useIdentityPlugin } from "@azure/identity";
import { nativeBrokerPlugin } from "@azure/identity-broker";

useIdentityPlugin(nativeBrokerPlugin);

Prerrequisitos

  • Una suscripción de Azure .

Instalación del paquete

Este paquete está diseñado para usarse con Azure Identity para JavaScript. Instale tanto @azure/identity como este paquete mediante npm:

npm install --save @azure/identity
npm install --save @azure/identity-broker

Entornos admitidos

Los complementos de Identidad de Azure para JavaScript admiten versiones estables (incluso numeradas) de Node.js a partir de la versión 18. Aunque los complementos se pueden ejecutar en otras versiones de Node.js, no se garantiza ninguna compatibilidad. @azure/identity-broker no admite entornos de explorador.

Conceptos clave

Si esta es la primera vez que usa @azure/identity o id. de Microsoft Entra, le recomendamos que lea Uso de @azure/identity con el identificador de Entra de Microsoft primero. Este documento le proporcionará un conocimiento más profundo de la plataforma y cómo configurar la cuenta de Azure correctamente.

Identificadores de ventana principal

Al autenticarse con el agente a través de InteractiveBrowserCredential, se requiere un identificador de ventana principal para asegurarse de que el cuadro de diálogo de autenticación se muestra correctamente en la ventana de solicitud. En el contexto de las interfaces gráficas de usuario en los dispositivos, un identificador de ventana es un identificador único que el sistema operativo asigna a cada ventana. Para el sistema operativo Windows, este identificador es un valor entero que actúa como referencia a una ventana específica.

Acceso directo a la cuenta Microsoft (MSA)

Las cuentas de Microsoft (MSA) son cuentas personales creadas por los usuarios para acceder a los servicios de Microsoft. El paso a través de MSA es una configuración heredada que permite a los usuarios obtener tokens a recursos que normalmente no aceptan inicios de sesión de MSA. Esta característica solo está disponible para aplicaciones propias. Los usuarios que se autentican con una aplicación configurada para usar el acceso directo de MSA pueden establecer legacyEnableMsaPassthrough en true dentro de InteractiveBrowserCredentialNodeOptions.brokerOptions para permitir que WAM muestre estas cuentas personales.

URI de redirección

Las aplicaciones de Microsoft Entra dependen de los URI de redirección para determinar dónde enviar la respuesta de autenticación después de que un usuario haya iniciado sesión. Para habilitar la autenticación asincrónica a través de WAM, se debe registrar un URI de redirección que coincida con el siguiente patrón en la aplicación:

ms-appx-web://Microsoft.AAD.BrokerPlugin/{client_id}

Complementos de identidad de Azure

A partir de @azure/identity versión 2.0.0, la biblioteca cliente de identidad para JavaScript incluye una API de complemento. Este paquete (@azure/identity-broker) exporta un objeto de complemento que debe pasar como argumento a la función de useIdentityPlugin de nivel superior del paquete de @azure/identity. Habilite el agente nativo en el programa de la siguiente manera:

import { useIdentityPlugin, InteractiveBrowserCredential } from "@azure/identity";
import { nativeBrokerPlugin } from "@azure/identity-broker";

useIdentityPlugin(nativeBrokerPlugin);
const credential = new InteractiveBrowserCredential({
  brokerOptions: {
    enabled: true,
    parentWindowHandle: new Uint8Array(0), // This should be a handle to the parent window
  },
});

Después de llamar a useIdentityPlugin, el complemento de agente nativo se registra en el paquete de @azure/identity y estará disponible en el InteractiveBrowserCredential que admite la autenticación del agente WAM. Esta credencial tiene brokerOptions en las opciones del constructor.

Ejemplos

Una vez registrado el complemento, puede habilitar la autenticación del agente WAM pasando brokerOptions con una propiedad enabled establecida en true a un constructor de credenciales. En el ejemplo siguiente, usamos el InteractiveBrowserCredential.

import { useIdentityPlugin, InteractiveBrowserCredential } from "@azure/identity";
import { nativeBrokerPlugin } from "@azure/identity-broker";

useIdentityPlugin(nativeBrokerPlugin);
const credential = new InteractiveBrowserCredential({
  brokerOptions: {
    enabled: true,
    parentWindowHandle: new Uint8Array(0), // This should be a handle to the parent window
  },
});
// We'll use the Microsoft Graph scope as an example
const scope = "https://graph.microsoft.com/.default";
// Print out part of the access token
console.log((await credential.getToken(scope)).token.substring(0, 10), "...");

Para obtener un ejemplo completo del uso de una aplicación Electron para recuperar un identificador de ventana, consulte este ejemplo.

Uso de la cuenta predeterminada para el inicio de sesión

Cuando la opción useDefaultBrokerAccount se establece en true, la credencial intentará usar silenciosamente la cuenta de agente predeterminada. Si se produce un error en el uso de la cuenta predeterminada, la credencial volverá a la autenticación interactiva.

import { useIdentityPlugin, InteractiveBrowserCredential } from "@azure/identity";
import { nativeBrokerPlugin } from "@azure/identity-broker";

useIdentityPlugin(nativeBrokerPlugin);
const credential = new InteractiveBrowserCredential({
  brokerOptions: {
    enabled: true,
    useDefaultBrokerAccount: true,
    parentWindowHandle: new Uint8Array(0), // This should be a handle to the parent window
  },
});
// We'll use the Microsoft Graph scope as an example
const scope = "https://graph.microsoft.com/.default";
// Print out part of the access token
console.log((await credential.getToken(scope)).token.substr(0, 10), "...");

Solución de problemas

Consulte la guía de solución de problemas de Identidad de Azure[guía de solución de problemas][https://github.com/Azure/azure-sdk-for-js/blob/@azure/identity-broker_1.1.0/sdk/identity/identity/TROUBLESHOOTING.md] para más información sobre cómo diagnosticar varios escenarios de error.

Registro

Habilitar el registro puede ayudar a descubrir información útil sobre errores. Para ver un registro de solicitudes y respuestas HTTP, establezca la variable de entorno AZURE_LOG_LEVEL en info. Como alternativa, el registro se puede habilitar en tiempo de ejecución llamando a setLogLevel en el @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Pasos siguientes

Proporcionar comentarios

Si encuentra errores o tiene sugerencias, abra un problema.

Contribuyendo

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

impresiones