Ведение журнала в MSAL.js

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

Уровни ведения журнала

MSAL предоставляет несколько уровней детализации при ведении журнала.

  • LogAlways: фильтрация на этом уровне журнала не выполняется. Журнал сообщений всех уровней будет записываться в журнал.
  • Критическое: журналы, описывающие неустранимый сбой приложения или системы, или катастрофический сбой, требующий немедленного внимания.
  • Ошибка: указывает на наличие проблемы и возникновение ошибки. Используется для отладки и выявления проблем.
  • Предупреждение: эти события необязательно будут ошибкой или сбоем, но их требуется рассмотреть для диагностики и выявления проблем.
  • Информационный: MSAL регистрирует события, предназначенные для информационных целей, не обязательно предназначенных для отладки.
  • Подробный (по умолчанию): MSAL регистрирует полные сведения о поведении библиотеки.

Примечание.

Не все уровни журналов доступны для всех пакетов SDK MSAL

Персональные данные и данные организации

По умолчанию средство ведения журналов MSAL не регистрирует персональные данные или данные организации с высокой степенью конфиденциальности. Библиотека позволяет включить ведение журналов персональных данных и данных организации при необходимости.

В следующих разделах содержатся дополнительные сведения о ведении журнала ошибок MSAL для приложения.

Настройка ведения журнала в MSAL.js

Вы можете включить ведение журнала в MSAL.js (JavaScript), передав объект loggerOptions при выполнении настройки для создания экземпляра PublicClientApplication. Единственным обязательным параметром конфигурации является идентификатор клиента приложения. Все остальное является необязательным, но может потребоваться в зависимости от модели клиента и приложения.

Этот объект loggerOptions имеет следующие свойства:

  • loggerCallback: функция обратного вызова, которая может быть предоставлена разработчиком для обработки ведения журнала инструкций MSAL особым образом. Реализуйте функцию loggerCallback в зависимости от желаемого способа перенаправления журналов. Функция loggerCallback имеет следующий формат: (level: LogLevel, message: string, containsPii: boolean): void
    • Поддерживаются уровни журнала Error, Warning, Info и Verbose. Значение по умолчанию — Info.
  • piiLoggingEnabled (необязательно.): если задано значение true, в журнал записываются персональные данные и данные организации. По умолчанию имеет значение false, чтобы приложение не сохраняло в журнал персональные данные. Журналы персональных данных никогда не записываются в выходные данные по умолчанию, например в Console, Logcat или NSLog.
import msal from "@azure/msal-browser"

const msalConfig = {
    auth: {
        clientId: "enter_client_id_here",
        authority: "https://login.microsoftonline.com/common",
        knownAuthorities: [],
        cloudDiscoveryMetadata: "",
        redirectUri: "enter_redirect_uri_here",
        postLogoutRedirectUri: "enter_postlogout_uri_here",
        navigateToLoginRequestUrl: true,
        clientCapabilities: ["CP1"]
    },
    cache: {
        cacheLocation: "sessionStorage",
        storeAuthStateInCookie: false,
        secureCookies: false
    },
    system: {
        loggerOptions: {
            logLevel: msal.LogLevel.Verbose,
            loggerCallback: (level, message, containsPii) => {
                if (containsPii) {
                    return;
                }
                switch (level) {
                    case msal.LogLevel.Error:
                        console.error(message);
                        return;
                    case msal.LogLevel.Info:
                        console.info(message);
                        return;
                    case msal.LogLevel.Verbose:
                        console.debug(message);
                        return;
                    case msal.LogLevel.Warning:
                        console.warn(message);
                        return;
                }
            },
            piiLoggingEnabled: false
        },
    },
};

Следующие шаги

Другие примеры кода можно найти в статье Примеры кода для платформы удостоверений Майкрософт.