Ведение журнала в MSAL для Java

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

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

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

  • LogAlways: Для этого уровня журнала фильтрация не выполняется. Будут регистрироваться сообщения всех уровней.
  • Critical: журналы, описывающие неустранимый сбой приложения или системы, или катастрофический сбой, требующий немедленного внимания.
  • Error: указывает, что что-то пошло не так, и возникла ошибка. Используется для отладки и выявления проблем.
  • Warning: не обязательно произошла ошибка или сбой, но предназначены для диагностики и выявления проблем.
  • Informational: MSAL регистрирует события, предназначенные для информационных целей, не обязательно предназначенных для отладки.
  • Verbose (по умолчанию): MSAL регистрирует полные сведения о поведении библиотеки.

Note

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

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

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

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

MSAL для ведения журнала Java

MSAL для Java позволяет использовать ту библиотеку журналирования, которая уже используется в вашем приложении, если она совместима с Simple Logging Facade for Java (SLF4J). MSAL для Java использует SLF4J в качестве простой абстракции для различных платформ ведения журнала, таких как java.util.log, Logback и Log4j. SLF4J позволяет пользователю подключаться к требуемой платформе ведения журнала во время развертывания и автоматически привязывается к Logback во время развертывания. Журналы MSAL записываются в консоль. В этой статье показано, как включить логирование MSAL4J с помощью фреймворка Logback в веб-приложении Spring Boot.

  1. Чтобы реализовать ведение журнала, включите logback пакет в pom.xml.

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
    
  2. Перейдите в папку resources, добавьте файл с именем logback.xml и вставьте следующий код. Это добавит журналы в консоль. Вы можете изменить добавочный элемент class для записи журналов в файл, базу данных или любой нужный элемент.

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
        <root level="debug">
            <appender-ref ref="STDOUT" />
        </root>    
    </configuration>
    
  3. logging.config Задайте для свойства расположение logback.xml файла перед основным методом. Перейдите к MsalWebSampleApplication.java и добавьте следующий код в открытый класс MsalWebSampleApplication.

    @SpringBootApplication
    public class MsalWebSampleApplication {
    
        static { System.setProperty("logging.config", "C:\Users\<your path>\src\main\resources\logback.xml"); }
        public static void main(String[] arrgs) {
            // Console.log("main");
            // System.console().printf("Hello");
            // System.out.printf("Hello %s!%n", "World");
            System.out.printf("%s%n", "Hello World");
            SpringApplication.run(MsalWebSampleApplication.class, args);
        }
    }
    

В вашей аренде вам потребуются отдельные регистрации приложений для веб-приложения и веб-API. Для регистрации приложений и предоставления области веб-API выполните действия в сценарии веб-приложения, которое проверяет подлинность пользователей и вызывает веб-API.

Инструкции по привязке к другим платформам ведения журнала см. в документации по SLF4J.

Личные данные и сведения об организации

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

PublicClientApplication app2 = PublicClientApplication.builder(PUBLIC_CLIENT_ID)
        .authority(AUTHORITY)
        .build();

Включите журналирование личных и организационных данных, установив logPii() в построителе клиентского приложения. Если вы включаете ведение журнала персональных или организационных данных, ваше приложение должно отвечать за безопасную обработку конфиденциальных данных и соблюдение любых нормативных требований.

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

PublicClientApplication app2 = PublicClientApplication.builder(PUBLIC_CLIENT_ID)
        .authority(AUTHORITY)
        .logPii(true)
        .build();

Дальнейшие действия

Дополнительные примеры кода см. в разделе Примеры кода для платформы Microsoft Identity.