Autenticación de nombre del sujeto/emisor (SNI) con MSAL Node

Warning

Antes de empezar aquí, asegúrese de comprender El uso de credenciales de certificado con el nodo MSAL.

La autenticación de SNI (nombre de firmante o emisor) permite que una aplicación se autentique mediante un certificado público de una CA de confianza predeterminada para admitir escenarios complejos de sustitución de certificados. Usa el parámetro de encabezado X5C para proporcionar el certificado al servidor.

Los usuarios internos deben seguir las instrucciones de la wiki interna de Microsoft Entra para configurar su entorno de Microsoft Entra para admitir SNI.

x5c reclamación

Deberá proporcionar la cadena de su certificado codificado pem al objeto de configuración de MSAL en el campo clientCertificate.x5c, además de proporcionar clientCertificate.thumbprintSha256 y clientCertificate.privateKey:

Cadena de ejemplo x5c de un archivo .pem:

-----BEGIN CERTIFICATE-----
<cert1>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<cert2>
-----END CERTIFICATE-----

// ...

Consulte también: Certificados: conversión de pfx a pem

Configuración de aplicaciones

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

En el fragmento de código siguiente se muestra cómo inicializar MSAL para la autenticación de nombre de firmante o emisor (SNI):

var msal = require('@azure/msal-node');
require('dotenv').config(); // process.env now has the values defined in a .env file

const config = {
    auth: {
        clientId: "ENTER_CLIENT_ID",
        authority: "https://login.microsoftonline.com/ENTER_TENANT_ID",
        clientCertificate: {
                thumbprintSha256: process.env.thumbprint, // a 64-digit hexadecimal string
                privateKey: process.env.privateKey,
                x5c: process.env.x5c 
            }
   }
}
};

// Create msal application object
const cca = new msal.ConfidentialClientApplication(config);

Problemas comunes

Consulte Problemas comunes al importar certificados.