Preguntas más frecuentes sobre MSAL Node

General

¿Cuándo se usa el nodo MSAL?

MSAL Node admite la autenticación basada en servidor para aplicaciones públicas o confidenciales. Esto es más aplicable a escenarios de autenticación basados en servidor o API web que necesitan autenticación. Puede encontrar una lista completa de los escenarios admitidos aquí y los flujos admitidos se enumeran aquí.

¿Cuál es el estado del nodo de ADAL? ¿Está disponible una guía de migración?

ADAL Node se encuentra actualmente en mantenimiento y recomendamos a todos los usuarios migrar a MSAL Node. El nodo MSAL está diseñado para reemplazar completamente el nodo ADAL. Para aquellos que buscan migrar de ADAL a MSAL, hemos proporcionado un documento de migración para ayudar en la migración. Tenga en cuenta que es posible que todas las aplicaciones no tengan una migración sin problemas, ya que se trata de una revisión completa de la funcionalidad antigua.

¿Cuáles son los servicios admitidos?

MSAL Node admite Microsoft Entra ID, MSA, ADFS y B2C. Nuestros ejemplos muestran el uso aquí. MSAL Node también admite aplicaciones únicas y multiinquilino.

Nota: ADFS es compatible actualmente, pero aún no se ha publicado un ejemplo independiente. Consulte este espacio para obtener una actualización próximamente.

¿Qué es una aplicación pública o una aplicación confidencial? ¿Qué es necesario saber durante el registro de aplicaciones?

Busque esto en los conceptos básicos de MSAL.

¿Qué valor toma por defecto la cadena de autoridad si proporciono "authority" y "azureCloudOptions"?

Si el desarrollador proporciona azureCloudOptions, MSAL.js sobrescribirá cualquier valor proporcionado en .authority MSAL.js también dará preferencia a los parámetros proporcionados en request frente a configuration. Tenga en cuenta que, si azureCloudOptions se establecen en la configuración, tendrán prioridad sobre authority en .request Si el desarrollador necesita sobrescribir esto, debe establecer azureCloudOptions en el request.

¿Cuál será la duración del token?

  • Microsoft Entra: busque la referencia más reciente para Microsoft Entra aquí. Tenga en cuenta que algunas de las características configurables para tipos de token específicos se retiran recientemente.
  • B2C: Busque aquí la guía de vigencia del token B2C .

¿Cómo obtengo el token de actualización?

El nodo MSAL no expone tokens de actualización por motivos de seguridad. En su lugar, administramos el token de actualización a través de la memoria caché y lo actualizamos según sea necesario para capturar el token de identificador y el token de acceso correspondientes para el desarrollador. Use la API adecuada acquireToken* para obtener tokens de acceso y MSAL garantizará que se renueven si es necesario. Si tiene un token de actualización adquirido por otros medios, puede usar la API acquireTokenByRefreshToken (consulte también: Ejemplo de token de actualización). Puede encontrar más información sobre los tokens de Microsoft Entra aquí.

¿Es compatible con Electron?

Yes. Consulte ejemplos de nodos de MSAL.

¿Se admite el flujo interactivo?

Yes. MSAL Node proporciona la API acquireTokenInteractive() en PublicClientApplication, que administra ambas fases del flujo de código de autorización. Abre una ventana del explorador para que el usuario inicie sesión y devuelva un AuthenticationResult. Consulte la documentación sobre la adquisición de solicitudes de token para obtener más detalles y el ejemplo auth-code-cli-app para obtener un ejemplo de implementación.

¿Los SPA son compatibles con el nodo MSAL?

Consulte MSAL Browser para casos de uso basados en SPA. El nodo MSAL debe ser una opción para aplicaciones de escritorio, aplicaciones web, API web o escenarios de autenticación del lado servidor.

¿Qué son las extensiones de MSAL Node? ¿Qué es un complemento de caché?

Las extensiones de MSAL Node son una biblioteca auxiliar para MSAL Node que ofrece mecanismos seguros para que las aplicaciones cliente realicen la serialización y la persistencia multiplataforma de la caché de tokens. Busque el uso, los ejemplos y más sobre esto aquí.

¿Se puede usar el complemento de caché incluido en las extensiones de MSAL Node en aplicaciones Electron?

Sí que puede. En caso de que se produzcan problemas relacionados con la versión del nodo, consulte esta nota que proporciona los pasos para solucionar problemas.

¿Qué versiones de Node.js se admiten? ¿Cómo se omite el error de instalación si deseo usar una versión de desarrollo activa Node.js?

MSAL Node admite oficialmente incluso versiones LTS estables numeradas como se documenta aquí.

Si desea solucionar esto, tenga en cuenta lo siguiente:

  • Yarn: pasa la opción --ignore-engines al comando yarn.
  • npm: agregue engine-strict=false al archivo .npmrc.

Importante

MSAL Node v5 requiere Node.js 20 o posterior. ya no se admiten Node.js 16 y 18.

¿Cómo se implementa el registro de autoservicio con MSAL Node?

MSAL Node admite el registro de autoservicio en el flujo de código de autenticación. Consulte nuestra documentación aquí para conocer los valores de prompt admitidos en la solicitud y los resultados esperados, y aquí para obtener una visión general del registro de autoservicio y de los cambios de configuración que debe realizar en su tenant de Azure. Tenga en cuenta que el registro de autoservicio no está disponible en entornos de prueba y B2C.

¿Por qué mi aplicación no funciona correctamente cuando se ejecuta detrás de un proxy?

A partir de MSAL Node v5, la configuración del proxy se controla a través de un cliente HTTP personalizado. Implemente su propio cliente de red creando una instancia de INetworkModule con compatibilidad con servidores proxy y proporciónelo como networkClient en las opciones de configuración del sistema. Consulte el ejemplo personalizado INetworkModule para obtener un ejemplo.

¿Cómo se implementa un agente http(s) personalizado en el nodo MSAL?

A partir de MSAL Node v5, se ha quitado el customAgentOptions parámetro . Para usar un agente HTTP(S) personalizado, implemente su propio cliente de red creando una instancia de INetworkModule y configurando el agente dentro de él. Proporcione el cliente de red personalizado como networkClient en las opciones de configuración del sistema. Consulte el ejemplo personalizado INetworkModule para obtener un ejemplo.

B2C (Negocio a Consumidor)

¿Cómo se controla el flujo de usuario de restablecimiento de contraseña?

La nueva experiencia de restablecimiento de contraseña forma parte de la directiva de registro o de inicio de sesión. Cuando el usuario selecciona el vínculo ¿Olvidó la contraseña? , se le envía inmediatamente a la experiencia de contraseña olvidada.

Nuestra recomendación es pasar a la nueva experiencia de restablecimiento de contraseña, ya que simplifica el estado de la aplicación y reduce el control de errores en el usuario. Si por algún motivo tiene que usar el flujo de usuario de restablecimiento de contraseña heredado, tendrá que controlar el AADB2C90118 código de error devuelto desde el servicio B2C cuando un usuario selecciona el vínculo ¿Olvidó la contraseña? Para ver cómo se hace esto, consulte el ejemplo: Ejemplo de aplicación web de NODE B2C de MSAL (mediante código de autenticación)

Compatibility

¿Puedo usar MSAL Node con Microsoft Graph SDK de JavaScript?

Sí, el nodo MSAL se puede usar como proveedor de autenticación personalizado para el SDK de JavaScript de Microsoft Graph. Para obtener una implementación, consulte el ejemplo: Express Web App que llama a Graph API.

¿Puedo aprovisionar aplicaciones msAL Node a través de la línea de comandos?

Sí, recomendamos el nuevo SDK de Graph de PowerShell para ello. Por ejemplo, el script siguiente crea una aplicación de Microsoft Entra con un URI de redirección personalizado de tipo Aplicaciones móviles y de escritorio (también conocido como InstalledClient) y el permiso User.Read para Microsoft Graph en un inquilino especificado por el usuario y, a continuación, aprovisiona una entidad de servicio en el mismo inquilino basado en este objeto de aplicación:

Import-Module Microsoft.Graph.Applications

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Connect-MgGraph -TenantId "ENTER_TENANT_ID_HERE" -Scopes "Application.ReadWrite.All"

# User.Read delegated permission for Microsoft Graph
$mgUserReadScope = @{
    "Id" = "e1fe6dd8-ba31-4d61-89e7-88639da4683d" # permission Id
    "Type" = "Scope"
}

# Add additional permissions to array below
$mgResourceAccess = @($mgUserReadScope)

[object[]]$requiredResourceAccess = @{
    "ResourceAppId" = "00000003-0000-0000-c000-000000000000" # MS Graph App Id
    "ResourceAccess" = $mgResourceAccess
}

# Create the application
$msalApplication = New-MgApplication -displayName myMsalDesktopApp `
    -SignInAudience AzureADMyOrg `
    -PublicClient @{RedirectUris = "msal://redirect"} `
    -RequiredResourceAccess $requiredResourceAccess

# Provision the service principal
New-MgServicePrincipal -AppId $msalApplication.AppId