Uso di MSAL Node con il broker Linux

Libreria di Autenticazione Microsoft (MSAL) Node può utilizzare il broker Microsoft Single Sign-on per Linux per fornire il single sign-on (SSO) e l'acquisizione sicura dei token nelle distribuzioni Linux supportate. Il broker gestisce gli handshake di autenticazione e il ciclo di vita dei token, consentendo agli utenti di trarre vantaggio dall'integrazione con gli account noti al sistema.

Questo articolo illustra che cos'è il broker Linux, le distribuzioni supportate e come abilitare l'acquisizione di token negoziati in un'app Node.js.

Per una panoramica del supporto broker in tutte le piattaforme, vedere Uso del nodo MSAL con Il broker di token nativo.

Che cos'è il broker Linux

Il Microsoft Single Sign-On per Linux è un broker di autenticazione fornito indipendentemente dalla distribuzione linux. Installarlo con una gestione pacchetti (sudo apt install microsoft-identity-broker o sudo dnf install microsoft-identity-broker). Viene anche raggruppata come dipendenza di applicazioni Microsoft, ad esempio Portale aziendale.

I vantaggi principali includono:

  • Single Sign-On. Semplifica l'autenticazione degli utenti con Microsoft Entra ID e protegge i token di aggiornamento dall'esfiltrazione e dall'uso improprio.
  • Sicurezza avanzata. I miglioramenti della sicurezza vengono distribuiti tramite aggiornamenti broker senza richiedere modifiche al codice dell'app.
  • Protezione dei token. Il broker garantisce che i token di aggiornamento siano associati al dispositivo.
  • Integrazione del sistema. Le applicazioni si integrano con il selettore di account integrato, consentendo agli utenti di selezionare rapidamente un account esistente.

Distribuzioni supportate

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

Prerequisiti

  • Node.js versione 18 o successive
  • Installare @azure/msal-node-extensions come dipendenza
  • microsoft-identity-broker deve essere installato nel dispositivo
  • Registrare l'URI di reindirizzamento del broker nella registrazione dell'app (vedere URI di reindirizzamento di seguito)
  • Installare le dipendenze di sistema necessarie (vedere Dipendenze di sistema seguenti)

URI di reindirizzamento

Per i flussi broker Linux, registrare l'URI di reindirizzamento seguente nella piattaforma applicazioni per dispositivi mobili e desktop nel portale di Azure:

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

Dipendenze del sistema

Ubuntu 22.04/24.04

sudo apt install libsecret-1-0 libdbus-1-3
  • libsecret : archivia e recupera in modo sicuro i token di autenticazione tramite il keyring di sistema (GNOME Keyring o WALLET Wallet).
  • dbus : comunicazione tra processi con il broker di autenticazione. Un bus di sessione di D-Bus deve essere in esecuzione (presente di norma negli ambienti desktop; i server headless potrebbero richiedere dbus-run-session o equivalente).
sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0
  • WebKitGTK : fornisce il browser incorporato per l'interfaccia utente di accesso interattiva.
  • GTK : il toolkit dell'interfaccia utente sottostante richiesto da WebKitGTK.

Abilitare la funzionalità

L'abilitazione del broker Linux usa la stessa configurazione di Windows e macOS. Passare un'istanza NativeBrokerPlugin nella configurazione del broker:

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 non passa a un flusso basato sul browser se il broker non è disponibile. Abilitare l'autenticazione negoziata solo nei dispositivi Linux supportati per evitare errori imprevisti.

Acquisizione dei token

Acquisizione interattiva dei token

Usare acquireTokenInteractive per richiedere un token tramite il broker Linux:

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

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

Acquisizione silente del token

Dopo un accesso interattivo iniziale, è possibile effettuare in modo invisibile all'utente le richieste di token successive:

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

Memorizzazione nella cache dei token

Il broker di autenticazione gestisce la memorizzazione nella cache dei token di aggiornamento e di accesso. I token acquisiti tramite il broker vengono gestiti dal broker stesso e sono associati al dispositivo. Non è necessario configurare la memorizzazione nella cache personalizzata quando si usa il broker.

Differenze quando si usa il broker Linux

  • Quando il broker deve richiedere l'interazione, viene visualizzata una finestra di dialogo di accesso nativa (basata su WebKitGTK). In questo modo l'esperienza utente viene modificata rispetto all'autenticazione basata su browser.
  • Il forceRefresh parametro per acquireTokenSilent non è supportato. È possibile ricevere un token memorizzato nella cache dal broker indipendentemente da questo flag.
  • Il bus di sessione D-Bus deve essere attivo affinché la comunicazione del broker funzioni.

Limitations

  • Le autorità di Azure AD B2C e di Active Directory Federation Services (AD FS) non sono supportate tramite il broker per Linux.
  • I provider di identità di terze parti (IDP) non sono supportati.
  • microsoft-identity-broker deve essere installato nel dispositivo affinché il broker funzioni.
  • msal-node non ripiega su un browser se il broker non è disponibile. Abilitare solo il broker in ambienti che lo supportano.
  • La prova di possesso del token di accesso (PoP) non è attualmente supportata tramite il broker Linux.