MSAL for Java 中的日志记录

Microsoft 身份验证库(MSAL)应用生成有助于诊断问题的日志消息。 应用可以使用几行代码配置日志记录,并自定义控制详细信息级别以及是否记录个人和组织数据。 建议创建 MSAL 日志记录实现,并为用户提供在遇到身份验证问题时提交日志的方法。

日志记录级别

MSAL 提供了多个级别的日志记录详细信息:

  • LogAlways:此日志级别上没有执行级别筛选。 将记录所有级别的日志消息。
  • Critical:描述无法恢复的应用程序或系统崩溃的日志,或需要立即注意的灾难性故障。
  • Error:表示出现了问题,并生成了一个错误。 用于调试和识别问题。
  • Warning:不一定是错误或失败,而是用于诊断和查明问题。
  • Informational:MSAL 将记录用于信息性目的的事件,不一定用于调试。
  • Verbose (默认值):MSAL 记录库行为的完整详细信息。

注释

并非所有日志级别都可用于所有 MSAL SDK。

个人和组织数据

默认情况下,MSAL 记录器不会捕获任何高度敏感的个人或组织数据。 如果决定这样做,该库提供了启用记录个人和组织数据的选项。

以下部分提供有关应用程序的 MSAL 错误日志记录的更多详细信息。

MSAL 用于Java日志记录

MSAL for Java 允许你使用应用中已使用的日志库,只要它与 Java 简单日志门面 (SLF4J) 兼容。 MSAL for Java 将 SLF4J 用作各种日志框架的统一简单抽象层,例如 java.util.loggingLogbackLog4j。 SLF4J 允许用户在部署时插入所需的日志记录框架,并在部署时自动绑定到 Logback。 MSAL 日志将写入控制台。 本文介绍如何在 Spring Boot Web 应用程序中使用 logback 框架启用 MSAL4J 日志记录。

  1. 若要实现日志记录,请在 pom.xml 中包含 logback 包。

    <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. 在 main 方法之前,将 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);
        }
    }
    

在租户中,需要为 Web 应用和 Web API 分别注册应用。 对于应用注册和公开 Web API 范围,请按照应用场景中的步骤操作 :对用户进行身份验证和调用 Web API 的 Web 应用

有关如何绑定到其他日志记录框架的说明,请参阅 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 标识平台代码示例