Миграция с MSAL версии 2.x на MSAL версии 3.x

Если вы не знакомы с MSAL, вы должны начать здесь.

Если вы поступаете из MSAL версии 1.x, сначала проверьте это руководство , чтобы перейти на MSAL версии 2.x, а затем выполните следующие действия.

Если вы переходите с MSAL v2.x, вы можете следовать этому руководству, чтобы обновить код для использования MSAL v3.x.

Кардинальные изменения

Создание экземпляра приложения

В MSAL версии 2.x вы создали экземпляр приложения, как показано ниже:

import { PublicClientApplication } from "@azure/msal-browser";

const msalConfig = {
    auth: {
        clientId: 'your_client_id'
    }
};

const msalInstance = new PublicClientApplication(msalConfig);

В MSAL версии 3.x также необходимо инициализировать объект приложения. В вашем распоряжении есть несколько вариантов:

Вариант 1

Создайте экземпляр PublicClientApplication и затем инициализируйте его. Функция initialize является асинхронной и должна завершиться до вызова других API MSAL.js.

import { PublicClientApplication } from "@azure/msal-browser";

const msalConfig = {
    auth: {
        clientId: 'your_client_id'
    }
};

const msalInstance = new PublicClientApplication(msalConfig);
await msalInstance.initialize();

Вариант 2

createPublicClientApplication Вызов статического метода, который возвращает инициализированный PublicClientApplication объект. Обратите внимание, что эта функция асинхронна.

import { PublicClientApplication } from "@azure/msal-browser";

const msalConfig = {
    auth: {
        clientId: 'your_client_id'
    }
};

const msalInstance = await PublicClientApplication.createPublicClientApplication(msalConfig);

Кэширование на основе утверждений

В MSAL версии 2.x добавление утверждений в запрос приведет к тому, что хэш запрошенной строки утверждений добавляется в ключ кэша маркеров по умолчанию. Это означает, что MSAL 2.x по умолчанию кэширует и сопоставляет токены на основе утверждений. В MSAL версии 3.x это поведение больше не является значением по умолчанию. Поведение MSAL версии 3.x по умолчанию заключается в том, чтобы перейти в сеть для обновления маркера каждый раз, когда запрашиваются утверждения, независимо от того, кэширован ли маркер ранее и по-прежнему действителен. Затем, после обращения к сети, полученный токен перезаписывает кэшированный токен на случай, если позже будет выполнен тихий запрос без утверждений. Чтобы включить кэширование на основе утверждений в MSAL версии 3.x для поддержания того же поведения, что и в MSAL версии 2.x, разработчики должны использовать cacheOptions.claimsBasedCachingEnabled флаг конфигурации, равный true в объекте конфигурации клиентского приложения:

const msalConfig = {
    auth: {
        ...
    },
    ...
    cache: {
        claimsBasedCachingEnabled: true
    }
}

const msalInstance = new msal.PublicClientApplication(msalConfig);
await msalInstance.initialize();

Все остальные API являются обратно совместимыми с MSAL версии 2.x. Рекомендуется ознакомиться с примером по умолчанию , чтобы просмотреть рабочий пример MSAL версии 3.0.

Крипто

MSAL версии 3.x прекращает поддержку встроенной криптографии IE11 window.msCrypto и библиотеки Microsoft Research JavaScript Cryptography Library (MSR crypto) window.msrCrypto в пользу встроенного криптографического API браузера window.crypto. Параметры config.system.cryptoOptions шифрования, используемые для шифрования MSR, больше не поддерживаются.

Ключевые изменения

Поддержка веб-браузеров

MSAL.js больше не поддерживает следующие браузеры:

  • IE 11
  • Edge (прежняя версия)

Зависимости пакетов

Версия TypeScript была обновлена с 3.8.3 до 4.9.5.

Параметры компилятора

Версии модулей и целевые версии были соответственно повышены с es6/es5 до es2020/es2020.

CDN

MSAL.js больше не размещается в сети CDN. Дополнительные сведения см. в этом документе .