Initialiser des applications clientes confidentielles dans le nœud MSAL

Cet article explique comment initialiser l’objet ConfidentialClientApplication dans MSAL Node. Vous allez apprendre à utiliser des secrets et des certificats en toute sécurité et à configurer l’autorité.

Prerequisites

Avant d’initialiser une application, vous devez d’abord l’inscrire dans le centre d’administration Microsoft Entra, en établissant une relation d’approbation entre votre application et le Plateforme d'identités Microsoft.

Après avoir inscrit votre application, vous aurez besoin d'une partie ou de toutes les valeurs suivantes qui sont disponibles dans le centre d’administration Microsoft Entra.

Valeur Obligatoire Description
ID d’application (client) Obligatoire GUID qui identifie de façon unique votre application dans le Plateforme d'identités Microsoft.
Autorité Optional URL du fournisseur d’identité ( instance) et audience de connexion pour votre application. L’instance et l’audience de connexion, une fois concaténées, constituent l’autorité.
ID de l’annuaire (locataire) Optional Spécifiez l’ID d’annuaire (locataire) si vous créez une application métier destinée uniquement à votre organisation, souvent appelée application à locataire unique.
URI de redirection Optional Si vous développez une application web, le redirectUri indique où le fournisseur d’identité (la plateforme d’identités Microsoft) doit renvoyer les jetons de sécurité qu’elle a émis.

Initialisation de l’objet ConfidentialClientApplication

Pour utiliser MSAL Node, vous devez instancier un objet ConfidentialClient .

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

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

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

Principes de base de la configuration

Les options de configuration pour le nœud comportent common paramètres et specific paramètres par flux d’authentification.

  • clientId est obligatoire pour initialiser une application cliente publique
  • authority prend la valeur https://login.microsoftonline.com/common/ par défaut si l’utilisateur ne la définit pas lors de la configuration
  • Les informations d’identification du client sont obligatoires pour les clients confidentiels. Les informations d’identification du client peuvent être les suivantes :
    • clientSecret est une chaîne secrète générée sur l’inscription de l’application.
    • clientCertificate est un certificat défini sur l’inscription de l’application. Le thumbprintSha256 est une empreinte SHA-256 X.509 du certificat, et le privateKey est la clé privée encodée au format PEM. x5c est la chaîne de certificats X.509 optionnelle utilisée dans les scénarios d’authentification basés sur le nom du sujet et l’émetteur.
    • clientAssertion est un objet ClientAssertion contenant une chaîne d’assertion ou une fonction de rappel qui retourne une chaîne d’assertion utilisée par l’application lors de la demande d’un jeton, ainsi que du type de l’assertion (urn :ietf :params :oauth :client-assertion-type :jwt-bearer). Le rappel est invoqué chaque fois que MSAL doit acquérir un token auprès de l'émetteur de tokens. Les développeurs d’applications doivent généralement utiliser le rappel, car les assertions expirent et de nouvelles assertions doivent être créées. Les développeurs d’applications sont responsables de la durée de vie des assertions. Utilisez ce mécanisme pour obtenir des jetons pour une API en aval à l’aide d’informations d’identification d’identité fédérée.

Pour plus d’options sur Configuration , reportez-vous à Configuration dans MSAL Node.

Configurer l’autorité

Par défaut, MSAL est configuré avec le tenant common, utilisé pour les applications multilocataires et les applications qui autorisent les comptes personnels (hors B2C).

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

Si votre audience d'application est limitée à un seul locataire, vous devez fournir une autorité contenant l'ID de votre locataire, comme ci-dessous :

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

Prochaines étapes