本文概述了不同類型的錯誤,並提出處理常見登入錯誤的建議。
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 身分識別平台 程式碼範例。