Použití uzlu MSAL se zprostředkovatelem Linuxu

MSAL Node může pomocí zprostředkovatele Microsoft Single Sign-on pro Linux umožnit jednotné přihlašování (SSO) a bezpečné získávání tokenů v podporovaných distribucích Linuxu. Zprostředkovatel spravuje ověřovací handshaky a životní cyklus tokenů, takže uživatelům umožňuje využívat integraci s účty, které systém zná.

Tento článek vysvětluje, co je zprostředkovatel Linuxu, jeho distribuce a jak povolit získání zprostředkovaného tokenu v aplikaci Node.js.

Přehled podpory zprostředkovatele na všech platformách najdete v tématu Použití uzlu MSAL s nativním zprostředkovatele tokenů.

Co je zprostředkovatel Linuxu

Microsoft Single Sign-On pro Linux je zprostředkovatel autentizace distribuovaný nezávisle na linuxové distribuci. Nainstalujte ho pomocí správce balíčků (sudo apt install microsoft-identity-broker nebo sudo dnf install microsoft-identity-broker). Je také dodáván jako závislost aplikací Microsoftu, jako je Portál společnosti.

Mezi klíčové výhody patří:

  • Jednotné přihlašování. Zjednodušuje ověřování uživatelů pomocí Microsoft Entra ID a chrání obnovovací tokeny před exfiltrací a zneužitím.
  • Lepší zabezpečení. Vylepšení zabezpečení se doručují prostřednictvím aktualizací zprostředkovatele bez nutnosti změn kódu aplikace.
  • Ochrana tokenů. Zprostředkovatel zajišťuje, že obnovovací tokeny jsou vázané na zařízení.
  • Integrace systému. Aplikace se napojují na integrovaný výběr účtů, který uživatelům umožňuje rychle vybrat některý ze stávajících účtů.

Podporované distribuce

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

Předpoklady

  • Node.js 18 nebo novější
  • Nainstalujte @azure/msal-node-extensions jako závislost
  • microsoft-identity-broker musí být na zařízení nainstalováno.
  • Zaregistrujte identifikátor URI přesměrování zprostředkovatele v registraci vaší aplikace (viz níže uvedený identifikátor URI přesměrování)
  • Nainstalujte požadované systémové závislosti (viz níže systémové závislosti ).

Přesměrování URI

Pro toky zprostředkovatele pro Linux zaregistrujte na portálu Azure následující identifikátor URI přesměrování v části platformy Mobilní a desktopové aplikace:

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

Systémové závislosti

Ubuntu 22.04/24.04

sudo apt install libsecret-1-0 libdbus-1-3
  • libsecret — bezpečně ukládá a načítá autentizační tokeny pomocí systémové klíčenky (GNOME Keyring nebo KDE Wallet).
  • dbus – Komunikace mezi procesy s zprostředkovatelem ověřování. Sběrnice relace D-Bus musí být spuštěna (ve desktopových prostředích je to standard; bezobslužné servery mohou vyžadovat dbus-run-session nebo ekvivalent).
sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0
  • WebKitGTK – poskytuje vložený prohlížeč pro interaktivní přihlašovací uživatelské rozhraní.
  • GTK – Základní sada nástrojů uživatelského rozhraní vyžadovaná webKitGTK.

Povolení funkce

Při povolení zprostředkovatele pro Linux se používá stejná konfigurace jako ve Windows a macOS. Předejte instanci NativeBrokerPlugin v konfiguraci brokeru:

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 pokud není zprostředkovatel dostupný, nepřepadá zpět do toku založeného na prohlížeči. Povolte zprostředkované ověřování jenom na podporovaných zařízeních s Linuxem, abyste se vyhnuli neočekávaným chybám.

Získávání tokenů

Interaktivní získání tokenu

Slouží acquireTokenInteractive k vyžádání tokenu prostřednictvím zprostředkovatele Linuxu:

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

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

Získání tichého tokenu

Po počátečním interaktivním přihlášení se následné žádosti o tokeny dají bezobslužně provádět:

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

Ukládání tokenů do mezipaměti

Zprostředkovatel ověřování zpracovává ukládání do mezipaměti obnovovacího a přístupového tokenu. Tokeny získané prostřednictvím zprostředkovatele jsou spravovány samotným zprostředkovatelem a jsou vázané na zařízení. Při použití zprostředkovatele nemusíte nastavovat vlastní ukládání do mezipaměti.

Rozdíly při použití zprostředkovatele Linuxu

  • Když zprostředkovatel potřebuje zobrazit výzvu k interakci, zobrazí se nativní přihlašovací dialogové okno (založené na WebKitGTK). Tím se změní uživatelské prostředí (UX) v porovnání s ověřováním na základě prohlížeče.
  • Parametr forceRefresh pro acquireTokenSilent není podporován. Token uložený v mezipaměti můžete obdržet od zprostředkovatele bez ohledu na tento příznak.
  • Aby komunikace zprostředkovatele fungovala, musí být spuštěná sběrnice relací D-Bus.

Omezení

  • Autority Azure AD B2C a Služby Active Directory Federation (AD FS) nejsou prostřednictvím linuxového zprostředkovatele podporovány.
  • Poskytovatelé identity od třetích stran (IDP) nejsou podporováni.
  • microsoft-identity-broker musí být nainstalován na zařízení, aby zprostředkovatel fungoval.
  • msal-node nepřechází zpět do prohlížeče, pokud zprostředkovatel není k dispozici. Povolte zprostředkovatele pouze v prostředích, která ho podporují.
  • Přístupový token typu proof-of-possession (PoP) není v současné době podporován prostřednictvím zprostředkovatele pro Linux.