Inicialización de aplicaciones cliente confidenciales en el nodo MSAL

En este artículo se muestra cómo inicializar el ConfidentialClientApplication objeto en el nodo MSAL. Aprenderá cómo utilizar secretos y certificados de forma segura, y cómo configurar la autoridad.

Prerequisites

Antes de inicializar una aplicación, primero debe registrarla en el Centro de administración Microsoft Entra, estableciendo una relación de confianza entre la aplicación y la Plataforma de identidad de Microsoft.

Después de registrar la aplicación, necesitará algunos o todos los valores siguientes que se pueden encontrar en el Centro de administración Microsoft Entra.

Value Obligatorio Description
Id. de aplicación (cliente) Obligatorio Un GUID que identifica de forma única su aplicación en la plataforma de identidad de Microsoft.
Autoridad Optional La dirección URL del proveedor de identidades (la instancia) y la audiencia de inicio de sesión de la aplicación. La instancia y la audiencia de inicio de sesión, cuando se concatenan, constituyen la autoridad.
Id. de directorio (inquilino) Optional Especifique el identificador de directorio (inquilino) si va a compilar una aplicación de línea de negocio exclusivamente para su organización, en ocasiones denominada aplicación de un único inquilino.
URI de redirección Optional Si va a crear una aplicación web, redirectUri especifica dónde debe devolver el proveedor de identidades (la plataforma de identidad de Microsoft) los tokens de seguridad que ha emitido.

Inicialización del ConfidentialClientApplication objeto

Para usar el nodo MSAL, debe crear una instancia de un objeto ConfidentialClient .

Uso de secretos y certificados de forma segura

Los secretos nunca se deben codificar de forma dura. El paquete dotenv npm se puede usar para almacenar secretos o certificados en un archivo .env (ubicado en el directorio raíz del proyecto) que se debe incluir en .gitignore para evitar cargas accidentales de los secretos.

Los certificados también se pueden leer desde archivos a través del módulo fs de NodeJS. Sin embargo, nunca deben almacenarse en el directorio del proyecto. Las aplicaciones de producción deben capturar certificados de Azure KeyVault u otros almacenes de claves seguros.

Consulte certificados y secretos para obtener más información.

Consulte el ejemplo de MSAL: auth-code-with-certs

import * as msal from "@azure/msal-node";
import "dotenv/config"; // process.env now has the values defined in a .env file

const clientAssertionCallback = async (config) => {
    // network request that uses config.clientId and (optionally) config.tokenEndpoint
    const result = await Promise.resolve(
        "network request which gets assertion"
    );
    return result;
};

const clientConfig = {
    auth: {
        clientId: "your_client_id",
        authority: "your_authority",
        clientSecret: process.env.clientSecret, // OR
        clientCertificate: {
            thumbprintSha256: process.env.thumbprint,
            privateKey: process.env.privateKey,
        }, // OR
        clientAssertion: clientAssertionCallback, // or a predetermined clientAssertion string
    },
};
const cca = new msal.ConfidentialClientApplication(clientConfig);

Consulte Problemas comunes al importar certificados.

Conceptos básicos de configuración

Las opciones de configuración para el nodo tienen common parámetros y specific parámetros por flujo de autenticación.

  • clientId es obligatorio inicializar una aplicación cliente pública.
  • authority el valor predeterminado es https://login.microsoftonline.com/common/ si el usuario no lo establece durante la configuración.
  • Una credencial de cliente es obligatoria para los clientes confidenciales. Las credenciales de cliente pueden ser:
    • clientSecret es la cadena secreta generada en el registro de la aplicación.
    • clientCertificate es un certificado establecido en el registro de la aplicación. thumbprintSha256 es una huella digital X.509 SHA-256 del certificado y privateKey es la clave privada codificada en PEM. x5c es la cadena de certificados X.509 opcional que se usa en escenarios de autenticación por nombre del sujeto/emisor.
    • clientAssertion es un objeto ClientAssertion que contiene una cadena de aserción o una función callback que devuelve una cadena de aserción que la aplicación utiliza al solicitar un token, así como el tipo de la aserción (urn:ietf:params:oauth:client-assertion-type:jwt-bearer). La llamada de retorno se invoca cada vez que MSAL necesita obtener un token del emisor de tokens. Los desarrolladores de aplicaciones deben utilizar generalmente la llamada de retorno, ya que las aserciones caducan y es necesario crear nuevas aserciones. Los desarrolladores de aplicaciones son responsables del período de validez de la aserción. Use este mecanismo para obtener tokens para una API de nivel inferior mediante una credencial de identidad federada.

Para obtener más opciones en Configuración , consulte Configuración en el nodo MSAL.

Configurar autoridad

De forma predeterminada, MSAL está configurado con el tenant common, que se usa para aplicaciones multi-tenant y aplicaciones que permiten cuentas personales (no B2C).

    authority: 'https://login.microsoftonline.com/common/'

Si el público de tu aplicación es un único inquilino, debes proporcionar una autoridad con tu ID de inquilino como se muestra a continuación:

    authority: 'https://login.microsoftonline.com/{your_tenant_id}'

Pasos siguientes