Använda MSAL Node med Linux Broker

Microsofts autentiseringsbibliotek (MSAL) Node kan använda Microsoft Single Sign-on för Linux-mäklaren för att erbjuda enkel inloggning (SSO) och säker hämtning av token på Linux-distributioner som stöds. Förmedlaren hanterar autentiseringshandskakningar och tokenens livscykel, vilket gör att användare kan dra nytta av integrering med konton som systemet känner till.

Den här artikeln förklarar vad Linux-brokern är, vilka distributioner den stöder och hur du aktiverar tokenhämtning via broker i en Node.js-app.

En översikt över brokerstöd på alla plattformar finns i Använda MSAL Node med den interna tokenförmedlaren.

Vad är Linux-koordinatorn?

Microsoft enkel inloggning för Linux är en autentiseringskoordinator som levereras oberoende av Linux-distributionen. Installera den med en pakethanterare (sudo apt install microsoft-identity-broker eller sudo dnf install microsoft-identity-broker). Det paketeras också som ett beroende av Microsoft program, till exempel Company Portal.

Viktiga fördelar är:

  • Enkel inloggning. Förenklar hur användare autentiserar med Microsoft Entra ID och skyddar uppdateringstoken från exfiltrering och missbruk.
  • Förbättrad säkerhet. Säkerhetsförbättringar levereras via uppdateringar av förmedlaren utan att det krävs ändringar i appkoden.
  • Tokenskydd. Förmedlaren säkerställer att uppdateringstoken är enhetsbundna.
  • Systemintegrering. Program ansluts till den inbyggda kontoväljaren så att användarna snabbt kan välja ett befintligt konto.

Distributioner som stöds

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

Förutsättningar

  • Node.js 18 eller senare
  • Installera @azure/msal-node-extensions som ett beroende
  • microsoft-identity-broker måste vara installerat på enheten
  • Registrera broker-omdirigerings-URI:n i din appregistrering (se Omdirigerings-URI nedan)
  • Installera de systemberoenden som krävs (se Systemberoenden nedan)

URI för omdirigering

För koordinatorflöden i Linux registrerar du följande omdirigerings-URI under plattformen för mobil- och skrivbordsprogram i Azure-portalen:

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

Systemberoenden

Ubuntu 22.04/24.04

sudo apt install libsecret-1-0 libdbus-1-3
  • libsecret – lagrar och hämtar autentiseringstoken på ett säkert sätt via systemnyckelringen (GNOME-nyckelring eller KDE-plånbok).
  • dbus – Kommunikation mellan processer med autentiseringskoordinatorn. En D-Bus-sessionsbuss måste köras (standard i skrivbordsmiljöer, huvudlösa servrar kan behöva dbus-run-session eller motsvarande).
sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0
  • WebKitGTK – tillhandahåller den inbäddade webbläsaren för det interaktiva inloggningsgränssnittet.
  • GTK – Den underliggande verktygslådan för användargränssnittet som krävs av WebKitGTK.

Aktivera funktionen

När du aktiverar Linux-koordinatorn används samma konfiguration som Windows och macOS. Skicka en NativeBrokerPlugin instans i koordinatorkonfigurationen:

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 faller inte tillbaka på ett webbläsarbaserat flöde om brokern inte är tillgänglig. Aktivera endast asynkron autentisering på Linux-enheter som stöds för att undvika oväntade fel.

Hämta token

Anskaffning av interaktiv token

Använd acquireTokenInteractive för att begära en token via Linux-koordinatorn:

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

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

Tyst tokenförvärv

Efter en första interaktiv inloggning kan efterföljande tokenbegäranden göras tyst:

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

Cachelagring av token

Autentiseringskoordinatorn hanterar cachelagring av uppdaterings- och åtkomsttoken. Token som erhålls via förmedlaren hanteras av förmedlaren själv och är enhetsbundna. Du behöver inte konfigurera anpassad cachelagring när du använder brokern.

Skillnader när du använder Linux-koordinatorn

  • När mäklaren behöver fråga efter interaktion visas en intern inloggningsdialogruta (WebKitGTK-baserad). Detta ändrar användarupplevelsen (UX) jämfört med webbläsarbaserad autentisering.
  • Parametern forceRefresh för acquireTokenSilent stöds inte. Du kan få en cachad token från förmedlaren oavsett den här flaggan.
  • En sessionsbuss för D-Bus måste vara igång för att kommunikation med broker ska fungera.

Limitations

  • Azure AD B2C- och Active Directory Federation Services (ADFS)-myndigheter (AD FS) stöds inte via Linux-koordinatorn.
  • Identitetsprovidrar från tredje part (IDP:er) stöds inte.
  • microsoft-identity-broker måste vara installerat på enheten för att mäklaren ska fungera.
  • msal-node går inte tillbaka till en webbläsare om brokern inte är tillgänglig. Aktivera endast förmedlaren i miljöer som stöder den.
  • Åtkomsttoken med innehavsbevis (PoP) stöds för närvarande inte via Linux-brokern.