Authentification SNI (Subject Name/Issuer) avec MSAL Node

Warning

Avant de commencer ici, veillez à comprendre l’utilisation des informations d’identification de certificat avec MSAL Node.

L’authentification SNI (nom/émetteur de l’objet) permet à une application de s’authentifier à l’aide d’un certificat public à partir d’une autorité de certification approuvée prédéterminée pour prendre en charge les scénarios de substitution de certificats complexes. Il utilise le paramètre d’en-tête X5C pour fournir le certificat au serveur.

Les utilisateurs internes doivent suivre les instructions sur le wiki interne Microsoft Entra pour configurer leur environnement de Microsoft Entra pour prendre en charge SNI.

x5c Réclamation

Vous devrez fournir la chaîne de votre certificat codé à l’objet de configuration MSAL dans le champ clientCertificate.x5c, en plus de fournir également clientCertificate.thumbprintSha256 et clientCertificate.privateKey :

Exemple x5c de chaîne issue d’un fichier .pem :

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

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

// ...

Voir aussi : Certificats : conversion de pfx en pem

la configuration d’une application ;

Utilisation sécurisée des secrets et des certificats

Les secrets ne doivent jamais être codés en dur. Le package npm dotenv peut être utilisé pour stocker des secrets ou des certificats dans un fichier .env (situé dans le répertoire racine du projet) qui doit être inclus dans .gitignore pour empêcher les chargements accidentels des secrets.

Les certificats peuvent également être en lecture à partir de fichiers via le module fs de NodeJS. Toutefois, ils ne doivent jamais être stockés dans le répertoire du projet. Les applications de production doivent extraire des certificats de Azure KeyVault ou d’autres coffres de clés sécurisés.

Pour plus d’informations, consultez les certificats et les secrets .

Consultez l’exemple MSAL : authentification-code-with-certs

L’extrait de code ci-dessous montre comment initialiser MSAL pour l’authentification SNI (Subject Name/ Issuer) :

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);

Problèmes courants

Reportez-vous aux problèmes courants lors de l’importation de certificats.