MSAL.js 中的日誌記錄

本文概述了不同類型的錯誤,並提出處理常見登入錯誤的建議。

MSAL 錯誤處理基礎

Microsoft 驗證資源庫(MSAL)中的例外是為了讓應用程式開發者進行故障排除,而非顯示給最終使用者。 例外訊息並非本地化。

處理例外與錯誤時,您可以利用例外類型本身及錯誤代碼來區分例外。 有關錯誤代碼列表,請參閱 Microsoft Entra 認證與授權錯誤代碼。

在登入過程中,您可能會遇到關於同意、條件存取(MFA、裝置管理、基於位置的限制)、令牌發放與兌換,以及使用者屬性等錯誤。

以下章節將提供更多關於您應用程式錯誤處理的詳細資訊。

在 MSAL.js 中設定記錄功能

在建立 PublicClientApplication 執行個體的設定期間,傳遞 loggerOptions 物件以啟用 MSAL.js(JavaScript)的記錄功能。 唯一需要的設定參數是應用程式的客戶端 ID。 其餘項目皆為選用,但視您的租用戶與應用程式模型而定,這些項目也可能是必要的。

loggerOptions 物件具有以下屬性:

  • loggerCallback:開發者可提供的回呼函式,用於以自訂方式處理 MSAL 訊息的記錄。 根據你想如何重定向日誌,實作這個 loggerCallback 函式。 loggerCallback 函式的格式如下 (level: LogLevel, message: string, containsPii: boolean): void
    • 支援的對數層級為:Error、、 WarningInfoVerbose、 和 。 預設值為 Info。
  • piiLoggingEnabled (可選):若設為 true,則記錄個人及組織資料。 預設情況下,這是假的,這樣你的應用程式就不會記錄個人資料。 個人資料日誌絕不會寫入預設輸出,如 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
        },
    },
};

下一步

欲了解更多程式碼範例,請參閱 Microsoft 身分識別平台 程式碼範例。