Использование узла MSAL с брокером Linux

Microsoft Authentication Library (MSAL) Node может использовать брокер Microsoft Single Sign-on for Linux для обеспечения единого входа (SSO) и безопасного получения токенов на поддерживаемых дистрибутивах Linux. Брокер управляет процедурами аутентификации и жизненным циклом токенов, позволяя пользователям получать преимущества от интеграции с учетными записями, известными системе.

В этой статье объясняется, что такое брокер для Linux, какие дистрибутивы он поддерживает и как включить получение токенов через брокер в приложении Node.js.

Обзор поддержки брокера на всех платформах см. в разделе Использование MSAL Node с собственным брокером токенов.

Что такое брокер Linux

Единый вход Microsoft для Linux — это брокер проверки подлинности, поставляемый независимо от дистрибутива Linux. Установите его с помощью диспетчера пакетов (sudo apt install microsoft-identity-broker или sudo dnf install microsoft-identity-broker). Она также упакована как зависимость Microsoft приложений, таких как Корпоративный портал.

В числе основных преимуществ можно назвать следующие:

  • Единый вход. Упрощает аутентификацию пользователей с помощью Microsoft Entra ID и защищает токены обновления от кражи и неправомерного использования.
  • Улучшенная безопасность. Улучшения безопасности предоставляются через обновления брокера, не требуя изменения кода приложения.
  • Защита токенов. Брокер обеспечивает привязку маркеров обновления к устройству.
  • Интеграция системы. Приложения интегрируются со встроенным средством выбора учетных записей, что позволяет пользователям быстро выбрать существующую учетную запись.

Поддерживаемые дистрибутивы

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

Необходимые условия

  • Node.js 18 или новее
  • Установите @azure/msal-node-extensions как зависимость
  • microsoft-identity-broker необходимо установить на устройстве
  • Зарегистрируйте URI перенаправления брокера в регистрации вашего приложения (см. URI перенаправления ниже)
  • Установите необходимые системные зависимости (см. сведения о системных зависимостях ниже)

Перенаправляющий URI

Для потоков брокера для Linux зарегистрируйте следующий URI перенаправления в разделе Мобильные и классические приложения на портале Azure:

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

Зависимости системы

Ubuntu 22.04/24.04

sudo apt install libsecret-1-0 libdbus-1-3
  • libsecret — безопасно сохраняет и извлекает маркеры проверки подлинности с помощью системного ключа (GNOME Keyring или KDE Wallet).
  • dbus — взаимодействие между процессами с брокером проверки подлинности. Сеансовая шина D-Bus должна быть запущена (обычно в средах рабочего стола; на серверах без графического интерфейса может потребоваться dbus-run-session или его эквивалент).
sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0
  • WebKitGTK — предоставляет внедренный браузер для интерактивного пользовательского интерфейса входа.
  • GTK — базовый набор средств пользовательского интерфейса, необходимый WebKitGTK.

Включение функции

Для включения брокера Linux используется та же конфигурация, что и в Windows и macOS. Передайте экземпляр NativeBrokerPlugin в конфигурации брокера:

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 не переключается на поток аутентификации через браузер, если брокер недоступен. Включайте посредническую проверку подлинности только на поддерживаемых устройствах Linux, чтобы избежать непредвиденных сбоев.

Получение токенов

Интерактивное получение токена

Используйте acquireTokenInteractive для запроса токена через брокер Linux:

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

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

Получение токена без вмешательства пользователя

После первоначального интерактивного входа последующие запросы токена можно выполнять без вмешательства пользователя:

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

Кэширование токенов

Брокер аутентификации управляет кэшированием токенов обновления и доступа. Токены, полученные через брокер, управляются самим брокером и привязаны к устройству. При использовании брокера не требуется настраивать настраиваемое кэширование.

Различия при использовании брокера Linux

  • Когда брокеру нужно запрашивать взаимодействие, появится собственное диалоговое окно входа (на основе WebKitGTK). Это изменяет взаимодействие с пользователем (UX) по сравнению с проверкой подлинности на основе браузера.
  • Параметр forceRefresh для acquireTokenSilent не поддерживается. Вы можете получить кэшированный маркер от брокера независимо от этого флага.
  • Для работы обмена данными с брокером сеансовая шина D-Bus должна быть запущена.

Ограничения

  • Azure AD B2C и службы федерации Active Directory (AD FS) (AD FS) не поддерживаются брокером Linux.
  • Сторонние поставщики удостоверений (IDP) не поддерживаются.
  • microsoft-identity-broker необходимо установить на устройстве, чтобы брокер функционировал.
  • msal-node не возвращается в браузер, если брокер недоступен. Включите брокер только в средах, поддерживающих его.
  • Подтверждение владения токеном доступа (PoP) в настоящее время не поддерживается в брокере Linux.