Получение токенов, привязанных к устройству, с помощью WAM в Windows

MSAL.js поддерживает получение токенов через Диспетчер учетных записей Интернета (WAM) в Windows. Эти токены привязаны к устройству, на котором они были получены, и не сохраняются в localStorage или sessionStorage браузера.

Поддерживаемая среда

Эта функция в настоящее время поддерживается только в следующей среде:

  • Компьютер под управлением сборки Windows, поддерживающей функцию (дополнительные сведения об этом).
  • Браузеры Chrome и Edge или Teams
  • расширение учетных записей Windows (версия 1.0.5 или более поздней версии) устанавливается при использовании Chrome или Edge
  • Приложение должно размещаться в https

Кроме того, эта функция в настоящее время поддерживается только для рабочих и учебных учетных записей.

Включение функции в MSAL.js

Чтобы включить эту функцию в MSAL.js задайте для флага allowPlatformBroker значение true в объекте конфигурации следующим образом:

const msalConfig = {
    auth: {
        clientId: "insert-clientId"
    },
    system: {
        allowPlatformBroker: true
    }
};

Кроме того, прежде чем вызывать любые другие API MSAL.js, необходимо вызвать новый API initialize и дождаться его завершения.

const pca = new PublicClientApplication(msalConfig);

// Initialize will establish a connection with the browser extension, if present
await pca.initialize();

// Call handleRedirectPromise, after initialization is complete
await pca.handleRedirectPromise();

// After initialize and handleRedirectPromise have completed, you may call any of the other APIs as you would without this feature
pca.acquireTokenSilent();

Для поддержки этой новой функции другие изменения не требуются. Теперь любой пользователь, обращаюющийся к приложению из поддерживаемой среды, сможет получить привязанные к устройству маркеры. Пользователи в неподдерживаемых средах будут продолжать получать токены через традиционные веб-процессы.

Рабочий пример можно найти здесь

Различия при получении токенов с помощью WAM

Есть несколько особенностей, из-за которых получение токенов через WAM может немного отличаться.

  • Все связанные с кэшем конфигурации применяются только к локальному кэшу MSAL. Локальный брокер управляет собственным, более защищённым кэшем, который используется вместо хранилища браузера, и не поддерживает настройку поведения этого кэша. Это означает, что вы можете получить кэшированный маркер независимо от значения параметров запроса, таких как: forceRefreshcacheLookupPolicy или storeInCache. Кроме того, токены, полученные от нативного брокера, не хранятся в локальном или сеансовом хранилище независимо от параметров, заданных в PublicClientApplication.
  • Если WAM потребуется запросить взаимодействие пользователя, откроется системный запрос. Этот запрос выглядит немного иначе, чем всплывающие окна браузера, к которым вы, возможно, привыкли.
  • Если это произойдет, переключение учетной записи в запросе WAM не поддерживается, MSAL.js вызовет ошибку (код ошибки: user_switch). Это ответственность вашего приложения за перехват этой ошибки и его обработку таким образом, что имеет смысл для ваших сценариев (например, показывать страницу ошибок, повторить попытку с новой учетной записью, повторить попытку с исходной учетной записью и т. д.).