MSAL.js 中的日志记录

本文概述不同类型的错误,并提供处理常见登录错误的相关建议。

MSAL 错误处理基础知识

Microsoft 身份验证库 (MSAL) 中的异常旨在帮助应用开发者进行故障排除,而不会向最终用户显示。 异常消息未经本地化。

处理异常和错误时,可以使用异常类型本身和错误代码来区分不同的异常。 有关错误代码的列表,请参阅 Microsoft Entra 身份验证和授权错误代码。

在登录体验期间,可能会遇到有关许可、条件访问(MFA、设备管理、基于位置的限制)、令牌颁发和兑换以及用户属性的错误。

以下部分提供了有关应用错误处理的更多详细信息。

在 MSAL.js 中配置日志记录

可以在 MSAL.js (JavaScript) 中启用日志记录,方法是在配置过程中传递一个 loggerOptions 对象,以便创建 PublicClientApplication 实例。 唯一必需的配置参数是应用程序的客户端 ID。 其余内容都是可选的,但可能会根据你的租户和应用程序模型而需要。

loggerOptions 对象具有以下属性:

  • loggerCallback:开发人员可以提供的回调函数,以自定义方式处理 MSAL 语句的日志记录。 根据您想要重定向日志的方式,实现 loggerCallback 函数。 loggerCallback 函数具有以下格式 (level: LogLevel, message: string, containsPii: boolean): void
    • 支持的日志级别包括: Error、 Warning、 Info和 Verbose。 默认值为 Info。
  • piiLoggingEnabled (可选):如果设置为 true,则记录个人和组织数据。 默认情况下,此项默认为 false,这样你的应用程序就不会记录个人数据。 个人数据日志永远不会写入到控制台、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
        },
    },
};

后续步骤

有关更多代码示例,请参阅Microsoft 标识平台代码示例。