Кэширование в расширениях проверки подлинности Microsoft для узла

Расширения аутентификации Microsoft для Node.js позволяют разработчикам выполнять сериализацию кэша токенов на разных платформах и сохранять его на диске. Он обеспечивает дополнительную поддержку Microsoft Authentication Library (MSAL) для Node.

MSAL Node поддерживает кэш в памяти по умолчанию и предоставляет интерфейс ICachePlugin для сериализации кэша, но не предоставляет стандартный способ хранения кэша маркеров на диске. Расширения аутентификации Microsoft для Node.js — это реализация по умолчанию для сохранения кэша на диске на разных платформах.

Расширения Microsoft Authentication Extensions для Node.js поддерживают следующие платформы:

  • Windows — API защиты данных (DPAPI) используется для защиты.
  • Mac — используется цепочка ключей Mac.
  • Linux — LibSecret используется для хранения данных в «Secret Service».

Installation

Пакет msal-node-extensions доступен на узле диспетчер пакетов (NPM).

npm i @azure/msal-node-extensions --save

Настройка кэша токенов

Вот пример кода, в котором Microsoft Authentication Extensions for Node.js используются для настройки кэша токенов.

const {
  DataProtectionScope,
  Environment,
  PersistenceCreator,
  PersistenceCachePlugin,
} = require("@azure/msal-node-extensions");

// You can use the helper functions provided through the Environment class to construct your cache path
// The helper functions provide consistent implementations across Windows, Mac and Linux.
const cachePath = path.join(Environment.getUserRootDirectory(), "./cache.json");

const persistenceConfiguration = {
  cachePath,
  dataProtectionScope: DataProtectionScope.CurrentUser,
  serviceName: "<SERVICE-NAME>",
  accountName: "<ACCOUNT-NAME>",
  usePlaintextFileOnLinux: false,
};

// The PersistenceCreator obfuscates a lot of the complexity by doing the following actions for you :-
// 1. Detects the environment the application is running on and initializes the right persistence instance for the environment.
// 2. Performs persistence validation for you.
// 3. Performs any fallbacks if necessary.
PersistenceCreator.createPersistence(persistenceConfiguration).then(
  async (persistence) => {
    const publicClientConfig = {
      auth: {
        clientId: "<CLIENT-ID>",
        authority: "<AUTHORITY>",
      },

      // This hooks up the cross-platform cache into MSAL
      cache: {
        cachePlugin: new PersistenceCachePlugin(persistence),
      },
    };

    const pca = new msal.PublicClientApplication(publicClientConfig);

    // Use the public client application as required...
  }
);

В следующей таблице приведено объяснение всех аргументов конфигурации сохраняемости.

Имя поля Description Требуется для
cachePath Путь к файлу блокировки, который используется библиотекой для синхронизации операций чтения и записи Windows, Mac и Linux
Область защиты данных Указывает область защиты данных на Windows текущего пользователя или локального компьютера. Windows
serviceName Указывает имя службы, используемое в Mac и (или) Linux Mac и Linux
accountName Указывает имя учетной записи для использования в Mac и (или) Linux Mac и Linux
usePlaintextFileOnLinux Флаг для перехода по умолчанию на открытый текст в Linux, если LibSecret завершится сбоем. Значение по умолчанию false Linux