Utilisation du nœud MSAL avec le répartiteur Linux

Microsoft Authentication Library (MSAL) Node peut utiliser le broker Microsoft Single Sign-On pour Linux afin de fournir l’authentification unique (SSO) et l’acquisition sécurisée de jetons sur les distributions Linux prises en charge. Le courtier gère les échanges d’authentification et le cycle de vie des jetons, permettant ainsi aux utilisateurs de bénéficier de l’intégration avec les comptes déjà connus du système.

Cet article explique ce qu’est le répartiteur Linux, les distributions qu’il prend en charge et comment activer l’acquisition de jetons réparti dans une application Node.js.

Pour obtenir une vue d’ensemble de la prise en charge du répartiteur sur toutes les plateformes, consultez Utilisation du nœud MSAL avec le répartiteur de jetons natif.

Qu’est-ce que le répartiteur Linux ?

L’authentification unique Microsoft pour Linux est un répartiteur d’authentification fourni indépendamment de la distribution Linux. Installez-le avec un gestionnaire de package (sudo apt install microsoft-identity-broker ou sudo dnf install microsoft-identity-broker). Il est également regroupé en tant que dépendance d'applications Microsoft telles que Portail d'entreprise.

Les principaux avantages sont les suivants :

  • Authentification unique. Simplifie la façon dont les utilisateurs s’authentifient avec Microsoft Entra ID et protègent les jetons d’actualisation contre l’exfiltration et l’utilisation incorrecte.
  • Sécurité renforcée. Les améliorations de sécurité sont fournies via les mises à jour du répartiteur sans nécessiter de modifications de code d’application.
  • Protection des jetons. Le répartiteur garantit que les jetons d’actualisation sont liés à l’appareil.
  • Intégration du système. Les applications se connectent au sélecteur de compte intégré, ce qui permet aux utilisateurs de sélectionner rapidement un compte existant.

Distributions prises en charge

  • Ubuntu 22.04 / 24.04 (x64)
  • Red Hat Enterprise Linux (RHEL) 8 / 9 / 10 (x64)

Prerequisites

URI de redirection

Pour les flux avec répartiteur pour Linux, enregistrez l’URI de redirection suivante sous la plateforme Applications mobiles et de bureau dans le portail Azure :

https://login.microsoftonline.com/common/oauth2/nativeclient

Dépendances système

Ubuntu 22.04/24.04

sudo apt install libsecret-1-0 libdbus-1-3
  • libsecret : stocke et récupère en toute sécurité les jetons d’authentification via le keyring système (GNOME Keyring ou KDE Wallet).
  • dbus : communication entre processus avec le répartiteur d’authentification. Un bus de session D-Bus doit être en cours d’exécution (standard dans les environnements de bureau ; les serveurs sans tête peuvent avoir besoin dbus-run-session ou équivalent).
sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0
  • WebKitGTK : fournit le navigateur incorporé pour l’interface utilisateur de connexion interactive.
  • GTK : kit de ressources d’interface utilisateur sous-jacent requis par WebKitGTK.

Activer la fonctionnalité

L’activation du répartiteur Linux utilise la même configuration que Windows et macOS. Transmettez une NativeBrokerPlugin instance dans la configuration du répartiteur :

import { PublicClientApplication, Configuration } from "@azure/msal-node";
import { NativeBrokerPlugin } from "@azure/msal-node-extensions";

const msalConfig: Configuration = {
    auth: {
        clientId: "your-client-id",
    },
    broker: {
        nativeBrokerPlugin: new NativeBrokerPlugin(),
    },
};

const pca = new PublicClientApplication(msalConfig);

Note

msal-node ne bascule pas vers un flux via le navigateur si le broker n’est pas disponible. Activez uniquement l’authentification répartie sur les appareils Linux pris en charge pour éviter les défaillances inattendues.

Acquisition des jetons

Acquisition de jetons interactifs

Utilisez acquireTokenInteractive pour demander un jeton via le broker Linux :

const tokenRequest = {
    scopes: ["User.Read"],
};

const result = await pca.acquireTokenInteractive(tokenRequest);
console.log("Access token:", result.accessToken);

Acquisition de jetons silencieux

Après une connexion interactive initiale, les demandes de jeton suivantes peuvent être effectuées en mode silencieux :

const accounts = await pca.getAllAccounts();

if (accounts.length > 0) {
    const silentRequest = {
        scopes: ["User.Read"],
        account: accounts[0],
    };

    const result = await pca.acquireTokenSilent(silentRequest);
    console.log("Access token (silent):", result.accessToken);
}

Mise en cache de jeton

Le répartiteur d’authentification gère l’actualisation et la mise en cache des jetons d’accès. Les jetons acquis via le répartiteur sont gérés par le répartiteur lui-même et sont liés à l’appareil. Vous n’avez pas besoin de configurer la mise en cache personnalisée lors de l’utilisation du répartiteur.

Différences lors de l’utilisation du répartiteur Linux

  • Lorsque le répartiteur doit demander une interaction, une boîte de dialogue de connexion native (basée sur WebKitGTK) s’affiche. Cela modifie l’expérience utilisateur (UX) par rapport à l’authentification basée sur le navigateur.
  • Le paramètre forceRefresh de acquireTokenSilent n’est pas pris en charge. Vous pouvez recevoir un jeton mis en cache du répartiteur, quel que soit cet indicateur.
  • Un bus de session D-Bus doit être actif pour que la communication avec le broker fonctionne.

Limitations

  • Les autorités Azure AD B2C et Services ADFS (AD FS) ne sont pas prises en charge via le broker Linux.
  • Les fournisseurs d’identité tiers ne sont pas pris en charge.
  • microsoft-identity-broker doit être installé sur l’appareil pour que le répartiteur fonctionne.
  • msal-node ne bascule pas sur un navigateur si le broker n’est pas disponible. Activez uniquement le répartiteur dans les environnements qui le prennent en charge.
  • La preuve de possession (PoP) du jeton d’accès n’est actuellement pas prise en charge via le broker Linux.